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

此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

标签:bash,grep,ps,linux

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值