大家是否都遇到過這樣的情況:在遠(yuǎn)程機(jī)器上執(zhí)行一個(gè)長時(shí)間運(yùn)行的任務(wù),突然之間連接斷開了,SSH會話被終止,正常運(yùn)行的工作丟失了。幸運(yùn)的是,有一個(gè)叫做screen的實(shí)用工具,它能夠幫助我們恢復(fù)會話。
引言
Screen或GNU Screen是一個(gè)終端復(fù)用器。換句話說,你可以開始一個(gè)screen會話,然后在該會話中打開任意數(shù)量的窗口(虛擬終端)。在Screen中運(yùn)行的進(jìn)程即使在它們的窗口不可見時(shí)也會繼續(xù)運(yùn)行,即使斷開了連接。
安裝Linux GNU Screen
screen包現(xiàn)在在大多數(shù)Linux發(fā)行版上都是預(yù)安裝的。您可以通過輸入以下命令來檢查它是否安裝在您的系統(tǒng)上:
screen --version
Screen version 4.06.02 (GNU) 23-Oct-17
如果您的系統(tǒng)上沒有安裝screen,您可以使用您的發(fā)行版的包管理器輕松安裝它。
在Ubuntu和Debian上安裝Linux Screen
sudo apt update
sudo apt install screen
在CentOS和Fedora上安裝Linux Screen
sudo yum install screen
啟動Linux Screen
要開始一個(gè)screen會話,只需在控制臺中輸入screen:
screen
這將打開一個(gè)screen會話,創(chuàng)建一個(gè)新窗口,并在該窗口中啟動一個(gè)shell。
現(xiàn)在您已經(jīng)打開了一個(gè)screen會話,您可以通過輸入以下命令來獲取命令列表:
Ctrl+a ?
啟動命名會話
命名會話在運(yùn)行多個(gè)screen會話時(shí)非常有用。要創(chuàng)建一個(gè)命名會話,請使用以下參數(shù)運(yùn)行screen命令:
screen -S session_name
選擇一個(gè)描述性的會話名稱總是一個(gè)好主意。
使用Linux Screen窗口
當(dāng)您開始一個(gè)新的screen會話時(shí),它會創(chuàng)建一個(gè)帶有shell的單個(gè)窗口。
您可以在Screen會話中有多個(gè)窗口。
要創(chuàng)建一個(gè)帶有shell的新窗口,請輸入Ctrl+a c,將從范圍0...9中分配第一個(gè)可用的數(shù)字給它。
以下是一些管理Linux Screen窗口的最常見命令:
? Ctrl+a c 創(chuàng)建一個(gè)新窗口(帶有shell)。
? Ctrl+a " 列出所有窗口。
? Ctrl+a 0 切換到窗口0(按編號)。
? Ctrl+a A 重命名當(dāng)前窗口。
? Ctrl+a S 將當(dāng)前區(qū)域水平分割成兩個(gè)區(qū)域。
? Ctrl+a | 將當(dāng)前區(qū)域垂直分割成兩個(gè)區(qū)域。
? Ctrl+a tab 將輸入焦點(diǎn)切換到下一個(gè)區(qū)域。
? Ctrl+a Ctrl+a 在當(dāng)前窗口和上一個(gè)窗口之間切換。
? Ctrl+a Q 關(guān)閉除當(dāng)前區(qū)域外的所有區(qū)域。
? Ctrl+a X 關(guān)閉當(dāng)前區(qū)域。
從Linux Screen會話分離
您可以隨時(shí)通過輸入以下命令從screen會話中分離:
Ctrl+a d
在screen會話中運(yùn)行的程序在您分離會話后將繼續(xù)運(yùn)行。
重新連接到Linux Screen
要恢復(fù)您的screen會話,請使用以下命令:
screen -r
如果您的機(jī)器上有多個(gè)screen會話正在運(yùn)行,您需要在r開關(guān)后附加screen會話ID。
要找到會話ID,請使用以下命令列出當(dāng)前運(yùn)行的screen會話:
screen -ls
There are screens on:
10835.pts-0.linuxize-desktop (Detached)
10366.pts-0.linuxize-desktop (Detached)
2 Sockets in /run/screens/S-linuxize.
如果您想恢復(fù)screen 10835.pts-0,那么輸入以下命令:
screen -r 10835
自定義Linux Screen
當(dāng)screen啟動時(shí),它會從/etc/screenrc和~/.screenrc(如果文件存在)中讀取其配置參數(shù)。我們可以使用.screenrc文件根據(jù)我們的偏好修改默認(rèn)的Screen設(shè)置。
這是一個(gè)帶有自定義狀態(tài)行和一些額外選項(xiàng)的~/.screenrc配置樣本:
~/.screenrc
# Turn off the welcome message
startup_message off
# Disable visual bell
vbell off
# Set scrollback buffer to 10000
defscrollback 10000
# Customize the status line
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
Linux Screen的基本使用
以下是使用screen的最基本步驟:
1. 在命令提示符下輸入screen。
2. 運(yùn)行所需的程序。
3. 使用鍵序列Ctrl-a + Ctrl-d從screen會話中分離。
4. 通過輸入screen -r重新連接到screen會話。
無論是服務(wù)器運(yùn)維、科學(xué)計(jì)算還是持續(xù)集成,GNU Screen 都是 Linux 環(huán)境下不可或缺的生產(chǎn)力工具。通過簡單的配置優(yōu)化,它還能變身個(gè)性化終端工作臺?,F(xiàn)在就掌握這門必備技能,讓遠(yuǎn)程操作更穩(wěn)定、更高效!
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,也可以直接咨詢。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索,助力你在 Linux 運(yùn)維之路上穩(wěn)步前行。