首先仅供参考,这里有一个 回答 对 "如何终止在shell=True下启动的python子进程 "的提问
在这个过程中,用户正在启动一个子进程,他想稍后终止它。我已经试过了,效果不错。
现在,我想做类似的事情,但在远程机器上。远程机器可以通过ssh访问,没有问题。
所以我有
import os
import signal
import subprocess
import time
SERVER = "remote_server"
#Here initiate a subprocess that measures the cpu but this time remotely
pro= subprocess.Popen("ssh "+SERVER+ " sar -u 1 > mylog.log")
time.sleep(10)
#here kill the process (what should I put HERE??
#Kill the remote process
正如你所看到的,我启动了一个进程,该进程运行的是 sar -u 1 > mylog.log
在远程机器上。这个进程会在10秒后开始运行,我想让远程进程停止。怎样才能杀死它?
我觉得简单来说 os.killpg(os.getpgid(pro.pid), signal.SIGTERM)
不会杀死它,对吗?
你所要做的就是 proc.terminate()
或 proc.kill()
(最好是第一种)
请看 https:/docs.python.org3librarysubprocess.html#subprocess.Popen.kill。
你的远程程序会被杀死,因为SSH会自动杀死那些不再与SSH会话相关联的进程(大多数人都会发现这一点