Я хочу использовать pkill -f myPattern
в подпроцессе питона в: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 ])
, когда я звоню stop_process
со всеми узлами в кластере, это работает для всех узлов, кроме текущего узла. То есть, когда host == socket.gethostname()
приложение печатает Terminated
и выходит.
Это правильный способ остановить процесс с заданным рисунком? Если да, то как я могу решить эту проблему?
Благодаря
Может ли быть так, что при первом вызове вы используете список, а во втором - строку для команды pkill? Могу ли я предложить вам попробовать использовать shlex.split? –
Вы уверены, что 'host == socket.gethostname()' is 'True'? –
Да, даже без каких-либо условий, он падает. Я тестировал с помощью 'os.system ('pkill -f' + name)'. Опять же, приложение останавливается с сообщением 'Terminated' –