SSH遠端會話管理工具
在剛接觸Linux時最怕的就是SSH遠端登入Linux VPS編譯安裝程式時(比如安裝lnmp)網路突然斷開,或者其他情況導致不得不與遠端SSH伺服器連結斷開,遠端執行的命令也被迫停止,只能重新連線,重新執行。今天就給VPSer們介紹一款遠端會話管理工具 - screen命令。
screen 的作用是什麼呢?
使用telnet或SSH遠端登入linux時,如果連線非正常中斷,重新連線時,系統將開一個新的session,無法恢復原來的session.screen命令可以解決這個問題。Screen工具是一個終端多路轉接器,在本質上,這意味著你能夠使用一個單一的終端視窗執行多終端的應用。
1.screen命令總結
Screen是一款由GNU計劃開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時連線多個本地或遠端的命令列會話,並在其間自由切換。GNU screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。
2、如何安裝screen命令?
除部分精簡的系統或者定製的系統大部分都安裝了screen命令,也可以自己安裝
CentOS系統可以執行:yum install screen ;
Debian/Ubuntu系統執行:apt-get install screen 。
如果提示screen: command not found 命令不存,在可以執行:yum install screen 或 apt-get install screen安裝。
3、screen命令使用方法?
3.1 語法
screen [ -AmRvx -ls -wipe ] [ -d <作業名稱> ] [ -h <行數> ] [ -r <作業名稱> ] [ -s ] [ -S <作業名稱>]
3.2 選項
選項 |
描述 |
-A |
將所有的視窗都調整為目前終端機的大小 |
-d <作業名稱> |
將指定的screen作業離線 |
-h <行數> |
指定視窗的緩衝區行數 |
-m |
即使目前已在作業中的screen作業,仍強制建立新的screen作業 |
-R |
先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業 |
-s |
指定建立新視窗時,所要執行的shell |
-S <作業名稱> |
指定screen作業的名稱 |
-v |
顯示版本資訊 |
-ls 或 --list |
顯示目前所有screen作業 |
-wipe |
檢查目前所有的screen作業,並刪除已經無法使用的screen作業 |
3.3 常用的使用方法舉例
建立screen,screen會話取一個baoshan的名字,方便分辯,執行:
1 . screen -S baoshan
2. 執行你需要的執行的程式碼
3. Ctrl+A D(即按住Ctrl,依次再按A,D),使得前臺的命令視窗會話中的程式關閉,後臺仍在執行。
這步操作,會把你的前臺客戶端斷了,但後臺還是在跑的。不用怕。此時伺服器屬於(Detached)狀態。
如果你不想把你客戶端命令視窗斷了,因為斷了你就無法實時看到後臺輸出結果,那就只執行前2步即可。
一旦你這邊網路斷了,你 前臺命令視窗還是會斷了,哈哈。但是放心,後臺還是在跑。此時伺服器屬於(Detached)狀態
如果你這邊網路斷了,你 前臺命令視窗會斷了,就無法看到前臺輸出結果,但可以重新連線,恢復前臺screen會話輸出顯示。可以再執行:
screen -r baoshan
--------------------------------------------------
檢視當前的screen程序
scren -ls
[[email protected] ~]# screen -ls
There are screens on:
1533.pts-0.base (Detached)
1508.jock (Detached)
1493.tom (Detached)
1478.david (Detached)
29894.python (11/10/18 01:31:35) (Attached)
Sockets in /var/run/screen/S-root.
1478.david (Detached) 1478 表示該screen的程序號,後面你想人為關閉該會話,就kill -9 1478.就變成dead狀態,然後你看他不爽,你還可以screen -wipe 會自動把dead狀態的screen清除掉。 david表示你前面給screen取的名字
(Detached)表示前臺screen會話已斷開了(但伺服器後臺程式還在跑),但在隨後重新連線(attach)該會話,會在前臺客戶端顯示當前的輸出。
(Dead???)表示screen已經死亡,後臺肯定不在跑,你也沒法繼續重新連線會話了。
(Attached)表示screen後臺還在正常跑著,前臺也正常連線著,這是正常模式。
重新連線會話,只對detached狀態有效。1533 是上面screen -ls 你根據你的screen取的別名 的前面的程序號碼。
screen -r 1533
關閉screen的會話,一般對attached狀態操作,1533同上面的一樣
執行:exit ,會提示:[screen is terminating],表示已經成功退出screen會話。
或者直接: kill -9 1533 #殺死程序
screen -ls #檢視里程狀態
There are screens on:
1533.pts-0.base (Dead ???) #已殺死的程序
1508.jock (Detached)
1493.tom (Detached)
1478.david (Detached)
Remove dead screens with 'screen -wipe'.
4 Sockets in /var/run/screen/S-root.
清除dead會話
如果由於某種原因其中一個會話死掉(如人為殺掉會話),這裡screen -list 會顯示該會話為dead狀態,使用screen -wipe命令清除該會話
[[email protected] ~]# screen -wipe 1533 # 清空死亡程序
There is a screen on:
1533.pts-0.base (Removed)
1 socket wiped out.
No Sockets found in /var/run/screen/S-root.
screen用在網路環境不好的地方非常的有用。
建議各位執行程式的時候都開啟screen