发出mpirun命令后,我想获取此进程的pid,以便稍后可以终止此进程。如何做到这一点,而不必在mpirun命令的末尾添加'&'以将其发送到后台?查找mpirun命令的pid
其他条件是可能有多台mpirun进程在机器上运行。
发出mpirun命令后,我想获取此进程的pid,以便稍后可以终止此进程。如何做到这一点,而不必在mpirun命令的末尾添加'&'以将其发送到后台?查找mpirun命令的pid
其他条件是可能有多台mpirun进程在机器上运行。
随着打开MPI一个可通过赋予其--report-pid
选项指示mpirun
以输出它自己的PID:
--report-pid -
的PID输出到标准输出;--report-pid +
将PID输出到标准错误;--report-pid /path/to/filename
将PID写入filename
。要获得所有正在运行的mpirun
S的的PID,使用:
$ pgrep -u `whoami` mpirun
你可以用“PS”来获得PID
ps -A | grep process-name
ps aux | grep application_name
这句法在Ubuntu的伟大工程,但我不知道这是否可以很好地用于其他分布。它返回(至少)两个不同的行:一个包含您当前搜索过程的pid,另一个包含您正在搜索的过程的pid。程序PID只是列表的第二列。
您可以运行man ps
或ps --help
来查看ps命令的手册。
杀死一个进程查看命令的选项pkill
kill
和killall
除了把&
和使用$!
,然后%
把mpirun
过程的bash到前台:
$ mpirun -np 4 ./a.out &
[1] 12345
$ PID=$!
$ %
...
你可以使用pkill
命令来终止它,例如pkill mpirun
但是您需要确保只有一个mpirun
进程正在运行,或者您可以编写MPI程序,以便将其写入文件中,然后像许多UNIX守护进程那样读取此文件。
非常感谢!这工作正如我使用openmpi。它可以与其他mpi实现一起工作吗? – gaj 2014-09-15 09:06:58
不,“--report-pid”严格针对'orterun'(Open MPI中的作业启动器)。我找不到Hydra(MPICH中的启动器)的类似选项。 – 2014-09-15 19:51:54