找到mpirun命令的pid

时间:2014-09-12 13:05:52

标签: linux shell mpi

发出mpirun命令之后,我想得到这个进程的pid,以便我可以在以后杀死这个进程。如何做到这一点,而无需添加'&'在mpirun命令结束时将其发送到后台?

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

4 个答案:

答案 0 :(得分:3)

使用Open MPI,可以通过给mpirun选项指示--report-pid输出自己的PID:

  • --report-pid -将PID输出到标准输出;
  • --report-pid +将PID输出到标准错误;
  • --report-pid /path/to/filename将PID写入filename

要获取所有正在运行的mpirun的PID,请使用:

$ pgrep -u `whoami` mpirun

答案 1 :(得分:0)

您可以使用' ps'得到pid

ps -A | grep process-name

答案 2 :(得分:0)

ps aux | grep application_name

这种语法在Ubuntu上很有用,但我不知道它是否适用于其他发行版。它返回(至少)两个不同的行:一行包含当前搜索过程的pid,另一行包含您要搜索的过程的pid。程序PID只是列表的第二列。

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

要终止进程,请检查命令pkill killkillall

的选项

答案 3 :(得分:0)

除了&并使用$!然后使用%mpirun进程bash置于前台:

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

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