
我有一個正在運行的後台進程,其命令以“nohup Nice”開頭。由於通常需要 20 個小時,所以我讓它在晚上運行。然而,今天早上我收到一條訊息說“寫入失敗:管道損壞”,可能是因為伺服器關閉了空閒時間太長的連接。當我再次登入伺服器時,輸入「jobs」命令時沒有作業。如何從程式剩餘的位置重新啟動程序,而不是從頭開始運行?
答案1
這取決於您在哪裡看到該訊息。如果您透過 ssh 連接到伺服器並在本地終端上看到了這一點,那就沒問題。該進程可能仍在遠端伺服器上正常運作。您不會看到它,jobs
因為jobs
只顯示目前 shell 會話中執行的進程。如果您重新連接到伺服器,您將開始一個新會話,因此jobs
沒有幫助。嘗試運行ps aux | grep ProcessName
以檢查它是否仍在運行。
如果您在輸出檔案中或輸出檔案中看到此訊息nohup.out
,則您看不到。除非它是一個以某種方式支持恢復的過程。該錯誤意味著進程已停止。既然已經停止了,那就消失了,沒有辦法恢復了。
例如,如果這是讀取輸入檔案並產生輸出,您可以嘗試找出它何時停止並再次運行它,僅將剩餘的行作為輸入。不過,沒有任何技巧可以讓它神奇地重新啟動,因為沒有它何時停止的記錄。