SSH遠程登錄Linux時(比如下載一個數(shù)據(jù)包),網(wǎng)絡(luò)突然斷開或者其他情況導(dǎo)致不得不與遠程SSH服務(wù)器鏈接斷開,遠程執(zhí)行的命令也被迫停止,只能重新連接,重新運行。為了解決這個問題,我們可以使用screen管理遠程會話窗口。
1. Screen簡介
screen是一個可以在多個進程之間多路復(fù)用一個物理終端的全屏窗口管理器。Screen中有會話的概念,用戶可以在一個screen會話中創(chuàng)建多個screen窗口,在每一個screen窗口中就像操作一個真實的telnet/SSH連接窗口那樣。
2. 安裝screen
CentOS需要安裝epel后安裝screen執(zhí)行:
yum install screen?
Ubuntu系統(tǒng)執(zhí)行:
apt-get install screen
3. 常見screen使用方法
3.1 創(chuàng)建screen會話
screen -S jupyter
screen就會創(chuàng)建一個名字為jupyter的會話。
3.2 快捷鍵Ctrl+a d
detached暫時離開,保留screen會話中的任務(wù)或程序,即按住Ctrl,依次再按a,d。
3.3 恢復(fù)screen會話
當(dāng)回來時可以再執(zhí)行執(zhí)行:
screen -r jupyter?
即可恢復(fù)到離開前創(chuàng)建的jupyter會話的工作界面。如果忘記了,或者當(dāng)時沒有指定會話名,可以執(zhí)行:
screen -ls
列出當(dāng)前存在的會話列表:

目前已經(jīng)暫時退出了jupyter會話,所以狀態(tài)為Detached,當(dāng)使用screen -r jupyter后狀態(tài)就會變?yōu)锳ttached,832是這個screen的會話的進程ID,恢復(fù)會話時也可以使用:
screen -r 832?
screen -r 進程ID
3.4 關(guān)閉screen的會話
exit
按ctrl-a 松手后再按*可以看到多少個人連接這個共享會話
刪除會話session
screen -S PID -X quit
4. 常用快捷鍵
Ctrl+a c :在當(dāng)前screen會話中創(chuàng)建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一個窗口
Ctrl+a p :上一個窗口
Ctrl+a 0-9 :在第0個窗口和第9個窗口之間切換
給screen發(fā)送命令使用了特殊的鍵組合C-a。這是因為我們在鍵盤上鍵入的信息是直接發(fā)送給當(dāng)前screen窗口,必須用其他方式向screen窗口管理器發(fā)出命令,默認(rèn)情況下,screen接收以C-a開始的命令。這種命令形式在screen中叫做鍵綁定(key binding),C-a叫做命令字符(command character)。
通過C-a ?來查看所有的鍵綁定,常用的鍵綁定有:
C-a ?顯示所有鍵綁定信息
C-a w顯示所有窗口列表
C-a C-a切換到之前顯示的窗口
C-a c創(chuàng)建一個新的運行shell的窗口并切換到該窗口
C-a n切換到下一個窗口
C-a p切換到前一個窗口(與C-a n相對)
C-a 0..9切換到窗口0..9
C-a a發(fā)送 C-a到當(dāng)前窗口
C-a d暫時斷開screen會話
C-a k殺掉當(dāng)前窗口
C-a [進入拷貝/回滾模式