我想在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并退出。
用给定的模式停止进程是正确的方式吗?如果是,我如何解决这个问题?
谢谢
发布于 2017-07-17 23:09:45
当您启动python程序时,您可能会调用它,传递要杀死的进程的名称(这里只是猜测……)。pkill也会发现这个进程(使用-f),并在它正常终止之前杀死它。您需要找到一种方法来过滤python程序的pid (例如,尝试使用os.getpid() ),或者只使用进程名(避免使用-f选项)。
它只发生在你的本地机器上,因为只有在那里你才能运行python程序。
https://stackoverflow.com/questions/40503576
复制相似问题