linux技巧-使用screen管理你的遠端工作階段 當我們用ssh或是telent遠程登入到linux伺服器上,運行一些長時間的任務,必須等待任務完成才能離開該介面。在此期間不能關閉視窗或者中斷連線。否則這個任務的進程就會別殺掉,一切半途而廢,需要重新執行該任務。 如何解決這個問題? 首先來理解幾個概念: 進程組:一個或多個進程的集合,每個進程組有唯一一個進程組ID,即進程組長進程的ID 會話期:一個或多個進程組的集合,有唯一一個會話期首進程,會話期ID為首進程的ID 會話期可以有一個單獨的控制終端,與控制終端串連的會話期首進程叫控制進程,當前與終端互動的進程為前台進程。 掛斷訊號預設的動作為終止程式 當終端借口檢測到網路連接斷開,將掛斷訊號發送給控制進程 如果會話期首選進程終止,則該訊號發送到該會話期前台進程組 一個進程退出導致一個孤兒進程組中產生時,如果任意一個孤兒進程組處於stop狀態,發送SIGHUP和SIGCONT訊號到該進程組的所有進程。 因此,當網路斷開或終端視窗關閉後,控制進程收到SIGHUP訊號退出,會導致該會話期內其他進程退出 方法一:nohup #nohup command & 方法二:screen creen 是一個可以在多個進程間多工一個物理終端的視窗管理器。 使用方法: (1),[xuefeng@ku6]# screen screen將建立一個執行shell的全屏視窗,你可以執行任意shell,就像在ssh視窗一樣。 (2),[xuefeng@ku6]#screen vi abc screen建立一個執行vi abc的單獨視窗會話,退出vi 將退出該視窗 (3),還可以在已有screen會話視窗中建立新的視窗,在當前sceen視窗中鍵入C-a c,即Ctrl+a,再按下c鍵。重新控制各視窗中啟動並執行程式。 例如:在一個screen視窗中編輯vi /tmp/abc,之後需要作另外的事情,那麼可以在screen視窗鍵入C-a d,screen會提示暫時中斷會話。繼續前一個會話,#screen -ls 查看會話編號。重新串連screen -r 編號。