可能大家會遇到這樣的問題:使用 SSH 或者telent 遠(yuǎn)程登錄到Linux 服務(wù)器,運行一些需要很長時間才能完成的任務(wù),比如系統(tǒng)備份、ftp 傳輸?shù)鹊取MǔG闆r下我們都是為每一個這樣的任務(wù)開一個遠(yuǎn)程終端窗口,因為它們執(zhí)行的時間太長了。必須等待它們執(zhí)行完畢,在此期間不能關(guān)掉窗口或者斷開連接,如果因為,網(wǎng)絡(luò)異常或其它因素導(dǎo)致突然斷開連接,遠(yuǎn)程命令也會停止,只能重新連接后再運行,一切半途而廢了。這里我就教大家如何使用screen命令,避免出現(xiàn)以上問題。
Screen是一個可以在多個進(jìn)程之間多路復(fù)用一個物理終端的全屏窗口管理器。用戶可以在一個screen會話中創(chuàng)建多個screen子會話,在每一個screen會話(或子會話)中就像操作一個真實的telnet/SSH連接窗口。
安裝screen
1、使用putty或類似的SSH工具登錄CentOS 7服務(wù)器;直接輸入screen看提示“bash : screen: 未找到命令...”;檢車系統(tǒng)有沒有安裝screen;
2、如果你的CentOS系統(tǒng)沒有自帶screen,安裝方法如下:
yum install screen
安裝成功后,輸入screen會切換到另一個窗口,可以通過ctrl+a+d切換回原來的命令行界面;


創(chuàng)建screen會話
情景:需要在CentOS 7中下載并安裝LNMP一鍵安裝包;
1、先執(zhí)行以下命令screen -S shapolang以上命令的意思是:新建screen會話,名字為shapolang。
2、開始安裝lnmp,
a、執(zhí)行 wget --no-check-certificate https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz下載安裝包。
b、執(zhí)行:tar -xvf lnmp1.2-full.tar.gz 解壓。
c、執(zhí)行:cd lnmp1.2-full /進(jìn)入lnmp1.2目錄。
d、執(zhí)行:./install.sh 進(jìn)行安裝。
如果網(wǎng)絡(luò)掉線,可以重新連接,再執(zhí)行 screen -r shapolang就會看到你的shapolang安裝進(jìn)程。


暫時離開screen會話
(但保留screen里運行的LNMP一鍵安裝包命令)
在SSH窗口中按快捷鍵:Ctrl+a d(按住Ctrl,依次按a,再按d)即可退出名叫shapolang的screen的會話。
暫時離開screen會話時,screen的會話并不會因為離開而停止,正在運行中(如編譯LNMP一鍵安裝包)的進(jìn)程依然會繼續(xù)運行,screen的好處就是可以在同一個ssh窗口中執(zhí)行多個任務(wù),如再新開一個screen會話安裝gitlab。也可以臨時關(guān)閉ssh窗口,做些其它事情。
重新讀取screen會話
在SSH中執(zhí)行以上命令即可讀取,若忘記之前創(chuàng)建的screen會話的名字或者之前創(chuàng)建時候存在多個相同名稱的會話,可以通過下面命令查詢正在運行中的screen會話列表信息。
screen -ls
1、通過screen名字(如之前新建的shapolang)讀取。
screen -r shapolang
如果存在多個同名名的會在會話名之前有會話ID+會話名稱,如4054.shapolang;
可以通過screen -r 4054.shapolang或者screen -r 4054獲取指定會話(建議使用后一種,第一種比較復(fù)雜)




關(guān)閉screen會話
若不再需要當(dāng)前的screen會話,可以在當(dāng)前的screen會話中執(zhí)行 exit,提示[screen is terminating]表示已經(jīng)成功關(guān)閉screen會話(不會保留在內(nèi)存中),如果需要,請重建。


screen的快捷鍵
如之前講到的Ctrl + a d 可以暫時離開當(dāng)前的screen會話,同時screen還提供其它的快捷鍵。
Ctrl + a c :在當(dāng)前screen會話中創(chuàng)建一個子會話
Ctrl + a p :上一個子會話
Ctrl + a n :下一個子會話
注意事項:
操作非常簡單,不過最好不要創(chuàng)建太多同名會話的自己都分不清楚,畢竟回話ID不直觀。