此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程序


基础教程推荐
- 【Python+OpenCV】Windows+Python3 version_3(Anaconda3)+OpenCV3.4.3安装配置最新版安装配置教程 2023-09-03
- Python学习之windows音乐播放器之路(二) 2023-09-04
- CentOS7 安装 Python3.6 2023-09-04
- Windows(64位)上的Python 2.7.8(64位)是Ubuntu(64位)上2.7.8(64位)的一半 2023-11-12
- Python进程/线程/协程 2023-09-04
- windows下如何安装Python、pandas 2023-09-03
- Python实现 MK检验示例代码 2023-08-05
- Python + selenium 自动化测试框架详解 2023-08-04
- python爬虫beautiful soup的使用方式 2022-09-02
- 利用Python3编写一个电脑录屏神器 2022-09-02