2014-09-12 59 views
1

发出mpirun命令后,我想获取此进程的pid,以便稍后可以终止此进程。如何做到这一点,而不必在mpirun命令的末尾添加'&'以将其发送到后台?查找mpirun命令的pid

其他条件是可能有多台mpirun进程在机器上运行。

回答

2

随着打开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 
+0

非常感谢!这工作正如我使用openmpi。它可以与其他mpi实现一起工作吗? – gaj 2014-09-15 09:06:58

+0

不,“--report-pid”严格针对'orterun'(Open MPI中的作业启动器)。我找不到Hydra(MPICH中的启动器)的类似选项。 – 2014-09-15 19:51:54

0

你可以用“PS”来获得PID

ps -A | grep process-name 
0
ps aux | grep application_name 

这句法在Ubuntu的伟大工程,但我不知道这是否可以很好地用于其他分布。它返回(至少)两个不同的行:一个包含您当前搜索过程的pid,另一个包含您正在搜索的过程的pid。程序PID只是列表的第二列。

您可以运行man psps --help来查看ps命令的手册。

杀死一个进程查看命令的选项pkillkillkillall

0

除了把&和使用$!,然后%mpirun过程的bash到前台:

$ mpirun -np 4 ./a.out & 
[1] 12345 
$ PID=$! 
$ % 
... 

你可以使用pkill命令来终止它,例如pkill mpirun但是您需要确保只有一个mpirun进程正在运行,或者您可以编写MPI程序,以便将其写入文件中,然后像许多UNIX守护进程那样读取此文件。