SSH遠程登陸Linux以後執行任務時,遇到斷網、斷電或者電腦被人砸了致使客戶端與遠程服務器失聯,會致使正在執行的任務掛掉。通常來講,耗時比較久的任務咱們會用nohup sh xxx.sh &執行,可是,nohup沒法讓你介入操做,即便是kill都比較麻煩,得去找進程的pid。
shell
screen的好處就是,可讓你像nohup那樣「保存」正在執行的任務,也能夠垂手可得地恢復到正在執行任務的「screen」當中。而不管客戶端發生什麼天災人禍,服務器那邊都能如期執行。Screen被稱之爲一個全屏窗口管理器,用他能夠輕鬆在一個物理終端上得到多個虛擬終端的效果。而且,在這些虛擬終端中,它能夠建立多個窗口。瀏覽器
例如登陸以後:服務器
screen # 建立一個虛擬終端,生成默認的[pid.tty.host]名稱 ctrl+a d # 斷開剛建立的終端,回到建立前環境 screen -S Develop # 建立另外一個終端,命名爲Develop screen -S 測試 # 在Develop的screen環境中,再建立一個終端,命名爲測試 crtl+a d # 斷開剛建立的「測試」終端 screen -ls # 查看已存在的虛擬終端,會告訴你每一個終端的sessionid,以下: #There are screens on: # 24027.pts-2.xxx-host (Detached) # 24489.Develop (Detached) # 25062.測試 (Attached) #3 Sockets in /var/run/screen/S-work. screen -r 24489 # 回到Develop終端中 exit # 終止並退出Develop終端
上面講的是screen建立終端,在終端中,還有一個窗口的概念。終端比如是瀏覽器,窗口就是瀏覽器中的tab頁。
session
screen -r 24027 # 回到以前建立的終端中,必定要在screen終端中才能夠建立窗口 ctrl+a c # 建立窗口,而後隨便在這個窗口中敲幾個字符,方便辨認 ctrl+a c # 再建立一個 ctrl+a p # 切換到上一個窗口,也就是剛纔敲了字符的那個 ctrl+a n # 切換到下一個窗口 ctrl+a w # 顯示窗口列表 ctrl+a 0-9 # 切換制定的窗口 ctrl+a K # 關閉當前窗口,並切換到下一窗口(當退出最後一個窗口時,該終端自動終止,並退回到原始shell狀態) exit # 退出當前窗口,並切換到下一窗口(當退出最後一個窗口時,該終端自動終止,並退回到原始shell狀態)