Shell

列印 Matlab 實例的程序 ID (PID)

  • May 17, 2013

為了執行我的 Matlab 腳本,我創建了一個 shell 腳本,我為其提供了兩個參數 - matlab 文件 ( $1) 和日誌文件 ( $2) 的路徑:

nohup time matlab -some_parameters -r "run $1;exit" &>> "$2" &

當我需要殺死一個 Matlab 程序時,有時很難分辨哪個是哪個。是否有可能以某種方式將 Matlab 程序的 pid 包含在日誌文件中(即在 中$2)?

最後,似乎 Matlab 命令在呼叫時隨後跨越了其他程序 (JVM)。但是,有一個未記錄的函式feature返回正在執行的 Matlab 程序的 PID:

nohup time matlabR2012b -nodesktop -nosplash -nodisplay \
 -r "fprintf('PID: %s\n', num2str(feature('getpid')));run $1; exit" &> "$2" &

有幾種方法可以標記流程的實例。您可以通過程序列表中的命令名稱(例如matlab_1,代替matlab)或通過環境變數來執行此操作。也可以使用 PID。你只需要在開始之前輸出它matlab

nohup time bash -c 'echo $$; exec matlab -some_parameters -r "run '"$1"';exit"' &>> "$2" &

編輯1:

$$是 shell 的 PID,但由於execmatlab程序只是覆蓋了 shell 程序,即 PID 不會改變。exec意味著在被呼叫程序結束時沒有跳轉回shell;因為沒有殼了。

有關我提到的其他選項的解釋,請參閱我對這個問題的回答。

引用自:https://unix.stackexchange.com/questions/76052