如何从 python 代码获取进程状态?

How to get process' status from python code?

我想使用 python 代码中的 supervisorctl 来操作一个进程,以获取状态并进行如下条件分支:

import subprocess

status = subprocess.run(["sudo", "supervisorctl", "status", "my_process"])
if status == "STOPPED":
    # Do something
else:
    # Do another thing

但这行不通。 subprocess.runreturnsCompletedProcess(args=['sudo', 'supervisorctl', 'status', 'my_status'], returncode=0)。响应没有状态。
有什么方法可以获取状态吗?

我认为您需要使用 subprocess.check_output() 来获取 returned 给您的输出,而不仅仅是 return 代码。

subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)

运行 带参数的命令和 return 其输出为字节字符串。

python subprocess 文档描述了如何 .run() returns CompletedProcess 对象。

从那里您可以检索诸如状态之类的内容:

status = subprocess.run(["sudo", "supervisorctl", "status", "my_process"])
if status.returncode == 0:
    # success
else:
    # something went wrong