發出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