Python子进程pkill

时间:2016-11-09 09:29:11

标签: python subprocess kill-process

我想在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并退出时。

使用给定模式停止进程是否正确?如果是,我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

当你启动你的python程序时,你可能会调用它来传递要杀死的进程的名称(只是在这里猜测..)。 pkill也会找到此过程(您使用-f)并在其正确终止之前将其终止。您需要找到一种方法来过滤python程序的pid(例如,尝试os.getpid()),或者只使用进程名称(避免使用-f选项)。

它只发生在你的本地机器上,因为只有你运行python程序。