这个问题涉及运行一个 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
不适合我。