2017-12-21 22 views
0

私はステータスを取得し、このような条件分岐を作るために、Pythonコードからsupervisorctlを使用してプロセスを操作したいと思います:Pythonコードからプロセスの状態を取得するには?

import subprocess 

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

しかし、これは動作しません。 subprocess.runCompletedProcess(args=['sudo', 'supervisorctl', 'status', 'my_status'], returncode=0)を返します。レスポンスにはステータスがありません。
ステータスを取得する方法はありますか?

答えて

2

戻りコードを返すのではなく、subprocess.check_output()を使用して出力を返す必要があると思います。

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

引数を指定してコマンドを実行し、出力をバイト文字列として返します。

+0

ありがとう!これは機能します。 – Udomomo

0

subprocessのドキュメントでは、.run()CompletedProcessオブジェクトを返す方法について説明しています。そこには、ステータスのようなものを取得することができますから、

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