[英]How can I terminate a remote process that I launched with a python subprocess?
首先仅供参考,这是对“如何终止使用 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.org/3/library/subprocess.html#subprocess.Popen.kill
您的远程程序将被终止,因为 SSH 会自动终止不再与 SSH session 关联的进程(大多数人都很难找到)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.