此 VM 中运行着两个不同的 python 程序
一个是监控文件夹然后“做事”(有几个工人)的后台工作
10835 ? Sl 0:03 python main.py
10844 ? Sl 34:02 python main.py
10845 ? S 33:43 python main.py
第二个是通过脚本启动的
20056 pts/1 S+ 0:00 /bin/bash ./exp.sh
20069 pts/1 S+ 0:00 /bin/bash ./exp.sh
20087 pts/1 S+ 0:10 python /home/path/second.py
我已经尝试了很多方法来找到一种只杀死主程序的方法(我想建立一个 cron 看门狗),但没有成功
第一个我只想找到挂起的“python main.py”进程(伴随着[defunct]),但我什至无法单独找到这个进程。
上面的来自 ps -ax (所以它们当前都在运行) pgrep 'python' 返回所有 PID,也来自我不想要的 second.py :(没用,因此 pkill 也是如此)
pgrep 'python'
10835
10844
10845
20087
pgrep 'python main.py' 总是返回空,所以 pgrep 'main.py;
唯一有效的东西
ps ax | grep 'python main.py'
但是这个也返回它自己的 PID,grepping 'ps' 不是一个首选的解决方案。当 main.py 挂起时,它显示“python main.py [defunct]”。一个
ps ax | grep 'python main.py [defunct]'
作为测试没有用,因为它总是返回 true。除了 'python' 之外的任何东西的 pgrep 也总是返回 false。我有点不知所措。