做爲linux服務器管理員,常常要使用ssh登錄到遠程linux機器上作一些耗時的操做。html
也許你遇到過使用telnet或SSH遠程登陸linux,運行一些程序。若是這些程序須要運行很長時間(幾個小時),而程序運行過程當中出現網絡故障,或者客戶機故障,這時候客戶機與遠程服務器的連接將終端,而且遠程服務器沒有正常結束的命令將被迫終止。linux
又好比你SSH到主機上後,開始批量的scp命令,若是這個ssh線程斷線了,scp進程就中斷了。在遠程服務器上正在運行某些耗時的做業,可是工做還沒作完快要下班了,退出的話就會中斷操做了,如何纔好呢?shell
咱們利用screen命令能夠很好的解決這個問題。實如今斷開SSH的狀況下,在服務器上繼續執行程序。服務器
那什麼是screen命令?網絡
Screen被稱之爲一個全屏窗口管理器,用他能夠輕鬆在一個物理終端上得到多個虛擬終端的效果。ssh
Screen功能說明:.net
簡單來講,Screen是一個能夠在多個進程之間多路複用一個物理終端的窗口管理器,這意味着你可以使用一個單一的終端窗口運行多終端的應用。 Screen中有會話的概念,用戶能夠在一個screen會話中建立多個screen窗口,在每個screen窗口中就像操做一個真實的 telnet/SSH鏈接窗口那樣。線程
Screen命令語法:htm
screen [-AmRvx -ls -wipe][-d <做業名稱>][-h <行數>][-r <做業名稱>][-s ][-S <做業名稱>]進程
Screen命令參數:
-A -[r|R] 將全部的視窗都調整爲目前終端機的大小。
-c filename 用指定的filename文件替代screen的配置文件’.screenrc’.
-d [pid.tty.host] 斷開screen進程(使用該命令時,screen的狀態必定要是Attached,也就是說有用戶連在screen裏)。通常進程的名字是以pid.tty.host這種形式表示(用screen -list命令能夠看出狀態)。
-D [pid.tty.host] 與-d命令實現同樣的功能,區別就是若是執行成功,會踢掉原來在screen裏的用戶並讓他logout。
-h <行數> 指定視窗的緩衝區行數。
-ls或–list 顯示目前全部的screen做業。
-m 即便目前已在做業中的screen做業,仍強制創建新的screen做業。
-p number or name 預先選擇一個窗口。
-r [pid.tty.host] 恢復離線的screen進程,若是有多個斷開的進程,須要指定[pid.tty.host]
-R 先試圖恢復離線的做業。若找不到離線的做業,即創建新的screen做業。
-s shell 指定創建新視窗時,所要執行的shell。
-S <做業名稱> 指定screen做業的名稱。(用來替代[pid.tty.host]的命名方式,能夠簡化操做).
-v 顯示版本信息。
-wipe 檢查目前全部的screen做業,並刪除已經沒法使用的screen做業。
-x 恢復以前離線的screen做業。
Screen命令的常規用法:
screen -d -r:鏈接一個screen進程,若是該進程是attached,就先踢掉遠端用戶再鏈接。
screen -D -r:鏈接一個screen進程,若是該進程是attached,就先踢掉遠端用戶並讓他logout再鏈接
screen -ls或者-list:顯示存在的screen進程,經常使用命令
screen -m:若是在一個Screen進程裏,用快捷鍵crtl+a c或者直接打screen能夠建立一個新窗口,screen -m能夠新建一個screen進程。
screen -dm:新建一個screen,並默認是detached模式,也就是建好以後不會連上去。
screen -p number or name:預先選擇一個窗口。
Screen實現後臺運行程序的簡單步驟:
1> 要進行某項操做時,先使用命令建立一個Screen:
[linux@user~]$ screen -S test1
2>接着就能夠在裏面進行操做了,若是你的任務還沒完成就要走開的話,使用命令保留Screen:
[linux@user~]$ Ctrl+a+d #按Ctrl+a,而後再按d便可保留Screen
[detached] #這時會顯示出這個提示,說明已經保留好Screen了
若是你工做完成的話,就直接輸入:
[linux@user~]$ exit #這樣就表示成功退出了
[screen is terminating]
3> 若是你上一次保留了Screen,可使用命令查看:
[linux@user~]$ screen -ls
There is a screen on:
9649.test1 (Detached)
恢復Screen,使用命令:
[linux@user~]$ screen -r test1 (or 9649)
Screen命令中用到的快捷鍵
Ctrl+a c :建立窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一個窗口
Ctrl+a p :上一個窗口
Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換
Ctrl+a K(大寫) :關閉當前窗口,而且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,而且退回到原始shell狀態)
exit :關閉當前窗口,而且切換到下一個窗口(當退出最後一個窗口時,該終端自動終止,而且退回到原始shell狀態)
Ctrl+a d :退出當前終端,返回加載screen前的shell命令狀態
Linux的screen命令挺不錯,在服務器上作點什麼費時的工做就不用愁了!