Hello! 欢迎来到小浪资源网!



如何查找并终止失去控制的子进程?


如何查找并终止失去控制的子进程?

如何定位已启动但失去控制的进程?

在使用 multiprocessing 启动进程时,可能会遇到进程 a 终止而留有处于活动状态的进程 b 的情况。这时,需要找到已启动的进程 b 并将其停止。

以下是几种可以用来查找和停止已启动进程的方法:

1. 保存进程 pid

在启动进程 b 时,将 b 的 pid 保存到文件中。当需要停止进程 b 时,读取文件中的 pid 并使用 kill 命令将其停止。

# 保存进程b的pid with open("process_b.pid", "w") as file:     file.write(str(p.pid))
# 使用kill命令来停止进程b kill $(cat process_b.pid)

2. 使用进程组

设置进程 b 为进程组的组长,当进程 a 退出时,进程 b 也将退出。

os.setpgid(0, 0)

保存进程 b 组的组 id 到文件中。

with open("process_b_gid", "w") as file:     file.write(str(os.getpgid(p.pid)))

停止进程 b 组:

kill -- -$(cat process_b_gid)

3. 命令行工具

使用 ps 命令查找进程 b:

ps aux | grep '进程b的一些特征'

4. 第第三方库

安装 psutil 库并使用其 psutil.process_iter 函数查找进程 b:

for proc in psutil.process_iter(['pid', 'name', 'cmdline']):      if '进程B的一些特征' in proc.info['name'] or '进程B的一些特征' in str(proc.info['cmdline']):         print(f"找到进程B: PID={proc.info['pid']}")

相关阅读