Ssh
在 SSH 會話斷開後保持程序執行
有時我想在回家之前啟動長時間執行的程序,所以我創建了一個到伺服器的 SSH 會話來啟動該程序,但是我想關閉我的筆記型電腦並回家,晚飯後,我想檢查我下班前開始的流程。我怎樣才能用 SSH 做到這一點?我的理解是,如果您中斷 SSH 連接,您也會中斷伺服器上的登錄會話,從而終止長時間執行的程序。
用於
nohup
使您的程序忽略掛斷信號:$ nohup long-running-process & $ exit
你想使用 GNU Screen。太棒了!
ssh me@myserver.com screen #start a screen session run-a-long-process
CTRL
+a
,d
從您的螢幕會話中分離exit #disconnect from the server, while run-a-long-process continues
當您回到筆記型電腦時:
ssh me@myserver.com screen -r #resume the screen session
然後檢查您的長期執行過程的進度!
screen
是一個非常全面的工具,可以做的比我所描述的要多得多。在螢幕會話中,嘗試 ctrl+a,? 學習一些常用命令。可能最常見的是:
CTRL
+a
,c
創建一個新視窗CTRL
+a
,n
切換到螢幕會話中的下一個視窗CTRL
+a
,p
切換到螢幕會話中的上一個視窗- 如果您從一堆不同的系統登錄,您可能會不小心將自己連接到另一台電腦上的活動螢幕會話。出於這個原因,我總是恢復
screen -d -r
以確保如果另一個 shell 連接到我的螢幕會話,它將在我在目前系統上恢復之前分離。