我想在python的子进程中使用pkill -f myPattern
:
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
并退出时。
使用给定模式停止进程是否正确?如果是,我该如何解决这个问题?
由于
答案 0 :(得分:0)
当你启动你的python程序时,你可能会调用它来传递要杀死的进程的名称(只是在这里猜测..)。
pkill
也会找到此过程(您使用-f
)并在其正确终止之前将其终止。您需要找到一种方法来过滤python程序的pid(例如,尝试os.getpid()
),或者只使用进程名称(避免使用-f
选项)。
它只发生在你的本地机器上,因为只有你运行python程序。