如何检查进程是否仍在Linux上使用Python运行?

2024-04-24 23:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现的唯一好的方式是:

import sys
import os

try:
        os.kill(int(sys.argv[1]), 0)
        print "Running"
except:
        print "Not running"

Source
但这可靠吗?它是否适用于每个流程和每个分发?


Tags: importsourceossys方式not流程running
3条回答

在linux上,您可以在/proc/$PID目录中查找有关该进程的信息。实际上,如果目录存在,则进程正在运行。

它应该可以在任何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"

马克的答案是要走的路,毕竟,这就是为什么/proc文件系统存在的原因。对于更易于复制/粘贴的内容:

 >>> import os.path
 >>> os.path.exists("/proc/0")
 False
 >>> os.path.exists("/proc/12")
 True

相关问题 更多 >