python - 检查进程是否在 Linux 上使用 Python 运行

标签 python linux

我正在尝试根据进程 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/

相关文章:

linux - 内核模块中的 ip header 更改会中断连接

python - 显示菜单的python程序中的语法错误

linux - 创建的窗口未出现

php - 将 Codeception 供应商路径与 Linux 链接起来

linux - 如何使用终端重命名文件

linux - 在后台 bash 脚本中启动下标,以便当我关闭终端/ssh session 时它仍然运行

python - 如何使用 pywinauto 从上下文菜单中选择菜单项?

Python 命令行复选框

python - 如何在 Pandas 中创建一个规则集,根据搜索子字符串为特定列分配值?

python - 如何判断字符串的类型