如何在Linux上用Python检查进程是否仍在运行?
我找到的唯一一个不错的方法是:
import sys
import os
try:
os.kill(int(sys.argv[1]), 0)
print "Running"
except:
print "Not running"
(来源)
不过,这个方法可靠吗?它适用于所有的进程和所有的系统吗?
9 个回答
13
这段内容应该可以在任何POSIX系统上运行(不过,如果你知道/proc
文件系统会存在的话,像其他人提到的那样查看它会更简单)。
但是:如果你没有权限去发送信号给某个进程,os.kill
可能也会失败。你需要做一些类似下面的操作:
import sys
import os
import errno
try:
os.kill(int(sys.argv[1]), 0)
except OSError, err:
if err.errno == errno.ESRCH:
print "Not running"
elif err.errno == errno.EPERM:
print "No permission to signal this process!"
else:
print "Unknown error"
else:
print "Running"
29
在Linux系统中,你可以去目录 /proc/$PID 查看某个进程的信息。实际上,如果这个目录存在,说明这个进程正在运行。
56
马克的回答是最好的选择,毕竟这就是为什么会有 /proc 文件系统。为了让大家更方便复制粘贴,这里有一个更简单的示例:
>>> import os.path
>>> os.path.exists("/proc/0")
False
>>> os.path.exists("/proc/12")
True