2014-09-12 83 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守護進程那樣讀取此文件。