Shell

Gaussian 在遠端 linux 機器上使用 nohup 執行,在退出 shell 之前本地電腦斷電時被殺死

  • November 30, 2013

我在 Windows 上通過 SecureCRT 在遠端 Linux 上執行 Gaussian 時遇到問題。

高斯

Gaussian在執行時會產生不同的子執行檔(“連結”)。例如,我通過執行 啟動 Gaussian nohup g09 < test.in > test.out 2> test.out &,並且會在特定情況下g09產生不同link的 sl301.exe和。l502.exe

執行高斯

當我連接到遠端 Linux 機器並使用以下命令執行 Gaussian 時nohup ${Path_Of_Gaussian}/g09 < jobname.in > jobname.out 2> jobname.out &

  1. 如果我通過鍵入exit並按退出 shell Enter,我可以在 Linux 上的 Gaussian 繼續執行時退出(具體執行檔的名稱取決於具體時間)。
  2. 如果我關閉電腦(然後 SecureCRT 將關閉),Linux 上的 Gaussian 會被殺死並抱怨“掛斷”。
  3. 如果我通過鍵入exit並按退出Enter,然後登錄,我可以關閉電腦電源並且 Linux 上的 Gaussian 會繼續執行。
  4. jlliagre的答案在這種情況下不起作用。

執行簡單命令

例如,採用一個簡單的執行檔,它什麼都不做(即,不處理輸入和輸出)但會休眠 10 分鐘。當我執行它時nohup ${Path_Of_Executable}/executable &

  1. 如果我通過鍵入exit並按退出 shell Enter,我可以退出並且執行檔繼續在 Linux 上執行。
  2. 如果我關閉電腦(然後 SecureCRT 將關閉),在 Linux 上執行的執行檔將被終止。
  3. 如果我通過鍵入exit並按退出Enter,然後登錄,我可以關閉電腦(然後 SecureCRT 將關閉)並且 Linux 上的執行檔繼續執行。
  4. 正如在jlliagre知識淵博的答案中一樣,如果我執行nohup ${Path_Of_Executable}/executable </dev/null >/dev/null 2>&1 &,我可以在 Linux 上的執行檔繼續執行時關閉電源。

換句話說,為什麼nohup在 shell 退出之前本地電腦斷電時,在遠端電腦上執行的 Gaussian 會被殺死?

想法 #1 - 否認

根據您描述問題的方式,聽起來 Guassian 仍然與生成它的 shell 有一些聯繫。

除了執行之外,您還可以嘗試的另一件事nohup是執行disown -a,儘管這應該做同樣的事情,即斷開所有生成的程序與接收 SIGHUP 的連接。

想法 #2 - 將其包裹在另一個 Bash 中

另一個想法是像這樣呼叫 Guassian。

  1. 登錄到遠端機器
  2. nohup 狂歡
  3. 在這個輔助 shell 中執行 Guassian

這可能會使 Guassian 在本地機器失去連接時不會被終止。

想法 #3 - 使用 tmux 或 screen

我也遇到過與此類似的應用程序,我通常不會在桌面上敲太多頭,而是伸手去拿screen和/或tmux在 Screen 內的遠端系統上執行應用程序。

這可以更好地保護該過程,並具有稍後能夠重新連接它的額外好處。

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