如何终止我用python子进程启动的远程进程?

问题描述 投票:0回答:1

首先仅供参考,这里有一个 回答 对 "如何终止在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) 不会杀死它,对吗?

python linux subprocess remote-access kill-process
1个回答
0
投票

你所要做的就是 proc.terminate()proc.kill() (最好是第一种)

请看 https:/docs.python.org3librarysubprocess.html#subprocess.Popen.kill。

你的远程程序会被杀死,因为SSH会自动杀死那些不再与SSH会话相关联的进程(大多数人都会发现这一点

© www.soinside.com 2019 - 2024. All rights reserved.