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

问题描述 投票:0回答:3

我想使用 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)
。响应没有状态是什么。
有什么方法可以获取状态吗?

python supervisord
3个回答
3
投票

我认为您需要使用

subprocess.check_output()
将输出返回给您,而不仅仅是返回代码。

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

运行带有参数的命令,并将其输出作为字节字符串返回。


0
投票

python

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

从那里你可以检索状态之类的东西:

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

0
投票

supervisorctl不返回status 0是正常的, 所以最好使用subprocess.run,但是要添加capture_output参数来捕获输出... 这是我的代码 -

output = subprocess.run(['supervisorctl', 'status'], capture_output=True).stdout
# output is: b'webserver                        STOPPED   May 01 03:55 PM\n'
© www.soinside.com 2019 - 2024. All rights reserved.