2017-05-31 81 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

相關問題