私は、Pythonのサブプロセスでpkill -f myPattern
を使用したい:私は、クラスタ内のすべてのノードでstop_process
を呼び出すとき、それはすべてのノードが、現在のノードのためにPythonのサブプロセスpkillは
import subprocess as sp
def stop_process(name,host):
host = host.strip()
if host == socket.gethostname():
sp.call ([ 'pkill -f', name ])
else:
sp.call ([ 'ssh', host, 'pkill -f ' + name ])
動作します。つまり、host == socket.gethostname()
の場合、アプリケーションはTerminated
を出力して終了します。
与えられたパターンでプロセスを停止するのは正しい方法ですか?はいの場合は、どうすればこの問題を解決できますか?
おかげ
最初の呼び出しではリストを使用し、2番目の呼び出しではpkillコマンドの文字列を使用できますか? shlex.splitを試してみることをお勧めしますか? –
'host == socket.gethostname()'が 'True'ですか? –
はい、if条件がなくても、クラッシュします。 'os.system( 'pkill -f' + name)'でテストしました。最後に、アプリケーションは 'Terminated'メッセージで終了します。 –