2017-05-31 108 views
0

我想如果这个过程是基于进程名(test.py)上运行的检查,然后退出如何检查进程在python中运行(在linux中)?

l = commands.getstatusoutput("ps aux |grep 'python2.7'| grep  
'test.py' | grep -v 'grep' | wc -l") 

if int(l[1]) == 1: 
    pid = commands.getstatusoutput("ps -ef |grep 'python2.7'| grep 'test.py ' |awk '{print $2}'") 
    print "the process 'test.py ' have running ,the pid is :"+str(pid[1]) 
    sys.exit(0) 

else: 
    print "not running" 

输出:

[email protected]:/test$ python2.7 test.py 
the process 'test.py ' have running ,the pid is :26517 
26542 

然后我尝试检查

$ ps aux | grep agg_test 
georgetovrea 25181 0.0 0.0 10944 932 pts/9 S+ 23:26 0:00 grep --color=auto test 

进程没有运行,我想检查进程(test.py)是否有运行,然后退出, 但它总是打印正在运行的进程,

如何检查进程是否正在运行?有什么建议么?谢谢你的帮助。

+0

是命令你”从Python内部重新运行报告任何不同,如果你只是在shell中运行该命令? –

+0

尼克,当运行test.py时,输出是“进程'test.py'正在运行,pid是:26517 26542” – georgetovrea

+0

[this]的可能重复(https://stackoverflow.com/questions/568271 /如何做检查,IF-有-存在-A-工艺上带有一个赋予-PID功能于蟒蛇)。 – IsaacS

回答

-1

该程序运行良好。 我想你正在运行程序python而不是python2.7具体。

(a)在您的grep语句中尝试使用python而不是python2.7,那么罪魁祸首确实是您对python的使用。

(二)改回为python2.7,并用全路径运行您的程序python2.7

程序:

import commands 
import sys 

l = commands.getstatusoutput("ps aux |grep 'python2.7'| grep 'test.py' | grep -v 'grep' | wc -l") 

print(l) 
if int(l[1]) == 1: 
    pid = commands.getstatusoutput("ps -ef |grep 'python2.7'| grep 'test.py ' |awk '{print $2}'") 
    print "the process 'test.py ' have running ,the pid is :"+str(pid[1]) 
    sys.exit(0) 

else: 
    print "not running" 

输出:

[email protected]:/tmp$ /usr/bin/python2.7 test.py 

(0, '1') 

the process 'test.py ' have running ,the pid is :15620 
+0

DhruvPathak,我正在运行python2.7程序,该进程没有运行,但运行程序来检查并获取消息“get the process'test.py'have running,the pid is:28373,” – georgetovrea

+0

什么是你的python文件的名字? – DhruvPathak

相关问题