linux-如何查找/杀死特定的python程序

此VM中运行两个不同的python程序一个是后台工作,他监视一个文件夹,然后“做一些事情”(有几名工人)10835 ? Sl 0:03 python main.py10844 ? Sl 34:02 python main.py10845 ? S 33...

此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. pgrep除了’python’以外,还返回false.我有点笨.

解决方法:

在守护程序python脚本中,您应该创建PID文件:

def writePidFile():
  pid = str(os.getpid())
  f = open('/tmp/my_pid', 'w')
  f.write(pid)
  f.close()

现在杀死这个过程很简单:

kill `cat /tmp/my_pid`

或者,您可以只使用grep并过滤自己的进程:

ps ax | grep 'python main.py [defunct]' | grep -v grep

本文标题为:linux-如何查找/杀死特定的python程序

基础教程推荐