发出mpirun命令之后,我想得到这个进程的pid,以便我可以在以后杀死这个进程。如何做到这一点,而无需添加'&'在mpirun命令结束时将其发送到后台?
其他条件是机器上可能运行多个mpirun进程。
答案 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 ps
或ps --help
来查看ps命令的手册。
要终止进程,请检查命令pkill
kill
和killall
答案 3 :(得分:0)
除了&
并使用$!
然后使用%
将mpirun
进程bash置于前台:
$ mpirun -np 4 ./a.out &
[1] 12345
$ PID=$!
$ %
...
您可以使用pkill
命令终止它,例如pkill mpirun
但是你需要确保只运行一个mpirun
进程,或者你可以编写你的MPI程序,以便它将PID写入文件然后读取这个文件,就像许多UNIX守护进程一样做。