【发布时间】:2012-06-18 09:30:34
【问题描述】:
我正在使用subprocess 模块来确定进程是否正在运行。但是当查找的进程不存在时,结果就不一样了。
例如在shell中,如果进程python test.py不存在,则ps -ef|grep python|grep test|awk '{print $2}'的输出为空。但是在python中:
cmd="ps -ef|grep python|grep test|awk '{print $2}'"
vp=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
r=vp.communicate()[0]
输出r 不是无。是执行cmd的shell的pid。
那么如何得到想要的结果呢?
【问题讨论】:
-
我可以推荐
psutilmodule 来完成此类任务。 -
只需将 PID 与
os.getpid()进行比较。如果匹配,您可以忽略它,因为这是您当前的进程。
标签: python shell process awk subprocess