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

时间:2017-12-21 01:02:07

标签: python supervisord

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

import subprocess

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

但这不起作用。 subprocess.run返回CompletedProcess(args=['sudo', 'supervisorctl', 'status', 'my_status'], returncode=0)。响应没有状态。
有没有办法获得状态?

2 个答案:

答案 0 :(得分:2)

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

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

使用参数运行命令并将其输出作为字节字符串返回。

答案 1 :(得分:0)

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

从那里你可以检索状态:

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