rexdf / CommandTrayHost

A command line program monitor systray for Windows

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于热加载

rexdf opened this issue · comments

commented
  • 如果没有实质性修改configs,不要重启程序

啥样的算 实质性修改 呀?

commented

暂时我只想做name path cmd这三个的对比。enabled要不要算还在考虑

default
我开始纠结那个弹窗提示了
现在好像隐藏启动又失灵了

commented

日志我看看

2017-12-25 22:42:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:43:00 
2017-12-25 22:43:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:44:00 
2017-12-25 22:44:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:45:00 
2017-12-25 22:44:00 [ddns ๑乛◡乛๑] [method:restart done.] [left count: 0] [schedule next] 2017-12-25 23:00:00 
2017-12-25 22:45:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:46:00 
2017-12-25 22:46:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:47:00 
2017-12-25 22:47:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:48:00 
2017-12-25 22:48:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:49:00 
2017-12-25 22:49:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:50:00 
2017-12-25 22:50:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:51:00 
2017-12-25 22:51:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:52:00 
2017-12-25 22:52:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:53:00 
2017-12-25 22:53:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-25 22:54:00 
2017-12-25 22:54:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:55:00 
2017-12-25 22:55:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:56:00 
2017-12-25 22:56:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:57:00 
2017-12-25 22:57:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:58:00 
2017-12-25 22:58:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:59:00 
2017-12-25 22:59:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 23:00:00 

日志看上去没毛病……果然那个弹窗出BUG了……
11111111

2333
取消……然后疯狂有个老提示的窗口 还是点取消 一直弹 然后就错误退出了

commented

22:53:00为啥是start呢 是不是这时候弹出来的

commented

这个是出现非常严重的bug了,有具体的触发流程么?还记得改了啥之后触发的么

这个是我现在头疼的那个BT程序的问题 被人攻击了 老会错误退出 跟那边的作者也反馈了
但是我现在也抓包 不知道是什么导致的 解决不了 他退出的时候我就定时任务重启他
那个时间 应该是错误退出了 然后重启的

额 记得 我修改了

            /* // 可选 计划任务
            "crontab_config": { // crontab配置
                "crontab": "0 *\/1 * * * *", // crontab语法具体参考上面8
                "method": "restart", // 支持的状态有 start restart stop
                "count": 0, // 0 表示infinite不只限制,大于0的整数,表示运行多少次就不运行了
                // 可选
                "enabled": true,
                "log": "commandtrayhost.log", // 日志文件名,注释掉本行就禁掉log了
                "log_level": 0, // log级别,缺省默认为0。0为仅仅记录crontab触发记录,1附加启动时的信息,2附加下次触发的信息
								}, */

程序在运行的状态下 我把上面的计划任务改成了/……/批量备注掉
然后左击托盘点显/隐程序 激活弹窗 第一个窗口的提示上面没截图 是正常的 我取消
然后就出现了上面老的弹窗提示 我依然取消 然后在这里 重复多次 至少快10个这个老弹窗
然后最后取消就最终错误了
实在不行 这个取消按钮就不要了也行 我主要纠结的就是这个弹窗 这个弹窗会重复多次出现的BUG
点托盘就会重复多次出现(现在) 没有判断已经弹窗的情况下 (会多次弹窗)

我好像知道了 现在弹窗的问题 那个删除cache缺少逻辑判定
能不能 弹窗的时候 是 重启整个主程序 否=取消啥也不做(下次重启生效)
删除在判定是否有额外程序影响当前cache缓存 增加好像不影响 主要是减少影响的吧?然后做删除
因为我觉得现在的重启和重启整个程序没啥差别
(这里面可能有些逻辑问题 你看看)

commented

目前我在升级系统,明天再看代码,暂时修改了就重启程序吧

commented

重启自己比较难做(┓( ´∀` )┏)

你双击程序两次试试

那个删除的逻辑 应该在遇到错误读取不能的情况下 在做提示删除 这样?
不过现在cache里面好像缺少判定 都不知道谁是谁的窗口位置
重启自己....我想想

commented

刚刚有一个新版本你再试试,现在编译慢很多,等会 应该因为升级导致了其他问题 还是不要试了

我目前想到的重启自身……大致是 点[是]以后去运行目录下的某个文件
然后那个文件的功能是结束主程序进程和运行目录的主程序
虽然是可以但是不是一个程序了 不是很完美

commented

其实热加载并不算是核心功能,只是顺便加上的,不应该花过多时间去折腾这个。

不能重启只是因为我对其加了锁了,只要释放这个锁就好了,但是这会引入大量的代码,以及相当大的工作量。

那先不弄这个了吧 太麻烦先放着

commented

用最新版的 log_level 改成3 然后看下日志 可以找下窗口显示出来的原因

OK 今晚的时候试下~[测试完毕/任务完成]


我现在测试一下1.9-b261的 记得这个版本的时候还挺稳定的 再看看……(好像也是隐藏失败了)

...好吧 刚刚测试了一下 好像log_level:3的时候重启脱离控制了 窗口都是正常的了
322323
日志内容如下(它好像没记录下有用信息的说)

2017-12-26 12:50:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:51:00 
2017-12-26 12:51:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:52:00 
2017-12-26 12:52:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:53:00 
2017-12-26 12:53:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-26 12:54:00 
2017-12-26 12:54:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:55:00 
2017-12-26 12:55:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:56:00 
2017-12-26 12:56:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:57:00 
2017-12-26 12:57:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:58:00 
2017-12-26 12:58:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:59:00 
2017-12-26 12:59:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 13:00:00 
2017-12-26 13:00:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-26 13:01:00 
2017-12-26 13:00:00 [ddns ๑乛◡乛๑] [si.wShowWindow:SW_HIDE start_show:false] []
2017-12-26 13:00:00 [ddns ๑乛◡乛๑] [method:restart done.] [left count: 0] [schedule next] 2017-12-26 13:22:00 
2017-12-26 13:01:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 13:02:00 

commented

是不是13点的那次重启显示出来的?

对 [method:start started.]那行就是重启的时候

commented

这个很诡异了 si.wShowWindow:SW_HIDE start_show:false 这表示是按照隐藏的方式启动的。

经常不隐藏重启 偶尔有会隐藏重启 刚刚测试的旧版本b261也是不行 又失效了之前那晚还成功过

commented

ddns是不是会自己显示自己啊

都设置的隐藏 也不受cache影响 有时候他会隐藏的重启 有时候他就突然冒出来

commented

我严重怀疑ddns有自己显示自己的功能
si.wShowWindow:SW_HIDE start_show:false这个日志是在我运行之前把给操作系统的信息打印出来的,也就是告诉操作系统以隐藏的方式启动这个程序。除非它自己显示自己。

commented

我大约想到一种可能了

commented

假如ddns里面有一条start cmd它自己再开一个cmd那么我就管不着了

才说他又出现了……应该没的!~因为有隐藏 重启过
323232

commented

也就是有的时候ddns没有执行那条命令,有ddns的源码么 我看看就知道了

没的~我就想说 正常我开cmd去运行命令 都是不会自动结束的 比如BT那个命令 正常异常退出有BUG残留信息 而用/c 模式启动 就是单独的cmd运行

肯定不是命令的问题 因为现在的手动隐藏和显示的重启都是正常的 只有计划任务不正常!

ddns.bat

@echo OFF
E:\caddy\DDNS-2.1.2\run.bat

commented

run.bat里面呢

E:\caddy\DDNS-2.1.2\run.bat

@ECHO OFF

IF "%1" EQU "" (
    python "%~dp0run.py" -c "%~dp0config.json"
    PAUSE
) ELSE (
    python "%~dp0run.py" -c "%~dp0config.json" >> "%1"
)
commented

我觉得你执行执行python "%~dp0run.py" -c "%~dp0config.json"比较好

"path": "path_to_python",
"cmd": "python.exe \"run.py\" -c \"config.json\"",
"working_directory":"E:\\caddy\\DDNS-2.1.2",
commented

那个pause语句导致的窗口

default
33333333
这恐怕不行 因为run.py在他的目录下的
pause?但是我有成功过呢
确实BT命令我想不结束 有加这个 我试试拿掉

commented

这是CommandTrayHost输出的还是你手打的?

commented

我上面的配置的经过CommandTrayHost应该被转义了啊

commented

你按照我上面的那个配置应该就好了

commented

这是给操作系统用的,手打的无效的

我测试BT命令拿掉他好像也是会隐藏启动失败呢……

commented

贴完整的配置看看

commented

CommandTrayHost如果用bat的可能会有各种失效

commented

尽量不要用bat

44444444444444444
323232332
不能这样来好像
我以前都 没事呀 这些都是内置命令有系统path的呢

commented

bat经过两层调用后会溢出

commented

"path": "path_to_python", 这个是让你改一下的意思

commented

"path":"E:\\caddy\\DDNS-2.1.2",

如果你没装python,那么用这个试试

default啥是溢出呀
有装的...是双重引号或者斜杠少了 出的问题……好像
5555555555

commented

bt的bat也贴出来我来改一下 不要用bat了

commented

打where Python把结果贴出来看看

不行……DDNS那样配置会错误不能运行
可是以前没用计划任务的时候他们都能隐藏启动好好的呢

commented

溢出就是实际上不受托管了,多层子进程是没办法控制的

commented

where Python把结果贴出来看看.

我这样说吧 你就当做CommandTrayHost从来就没支持过bat运行吧。bat脚本的那点功能纯属增加麻烦。

哦~我开远程你来弄下

C:\Users\Administrator>where Python
C:\Program Files\Python35\python.exe
commented
"cmd": "python.exe \"run.py\" -c \"config.json\"",
"working_directory":"E:\\caddy\\DDNS-2.1.2",