如何在 SSH 会话中终止 Python 进程

如何在 SSH 会话中终止 Python 进程

这个问题涉及运行一个 bash 脚本,比如说helloworld.sh,它执行一个 MPImpirun命令,而该命令又运行一个 Python 程序,比如说helloworld.py,使用mpi4py。 bash 命令在一个“主”节点的 SSH 终端中使用,该节点将helloworld.py在多个“工作”节点中启动程序。为了使命令对 SSH 连接丢失具有鲁棒性,我使用nohup并将输出重定向到文件。命令是

nohup bash helloworld.sh > log.txt &

之后,会打印这样的消息

[1] 23802
nohup: ignoring input and redirecting stderr to stdout

我按Ctrl+ D,会话断开,而程序正常运行。 bash 脚本helloworld.sh是这样的

mpirun -n 25 --hostfile myhostfile.txt python helloworld.py

它将helloworld.py在“master”和一些“worker”节点(总共 25 个节点)上运行。

我的问题是有时我想杀死这个程序。我重新登录并执行:

pkill -9 23802

似乎什么也没发生,程序在所有节点上继续运行。然后,我运行top -c并获取其 PID,该 PID 与打印的内容不同(为什么?)nohup bash,例如 23844。我尝试运行

pkill -9 23844

还是没有效果。请注意,我需要一种方法来仅杀死这个进程,而不是所有可能正在运行的Python程序,即pkill -9 python不适合我。

相关内容