我正在尝试根据进程 ID 查找进程是否正在运行。根据论坛上的一篇帖子,代码如下。我不能考虑进程名称,因为有多个进程以相同的名称运行。
def findProcess( processId ):
ps= subprocess.Popen("ps -ef | grep "+processId, shell=True, stdout=subprocess.PIPE)
output = ps.stdout.read()
ps.stdout.close()
ps.wait()
return output
def isProcessRunning( processId):
output = findProcess( processId )
if re.search(processId, output) is None:
return true
else:
return False
输出:
1111 72312 72311 0 0:00.00 ttys000 0:00.00 /bin/sh -c ps -ef | grep 71676
1111 72314 72312 0 0:00.00 ttys000 0:00.00 grep 71676
它总是返回 true,因为它可以在输出字符串中找到进程 ID。
有什么建议吗?感谢您的帮助。
最佳答案
试试:
os.kill(pid, 0)
如果进程存在应该成功(并且什么都不做),或者如果进程不存在则抛出异常(你可以捕获)。
关于python - 检查进程是否在 Linux 上使用 Python 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647167/