Linux 終端神器 Screen,讓你的會(huì)話永不掉線
小李是一名DevOps工程師,正在遠(yuǎn)程連接到公司的Linux服務(wù)器上執(zhí)行一個(gè)長(zhǎng)時(shí)間運(yùn)行的任務(wù),比如編譯一個(gè)大型項(xiàng)目:
make build
然而,正當(dāng)他松口氣去喝杯咖啡時(shí),Wi-Fi斷開了!SSH連接中斷,他再次登錄后發(fā)現(xiàn)編譯任務(wù)已經(jīng)終止,只能重新開始。
如何在 SSH 斷開后仍然保持進(jìn)程運(yùn)行?
答案就是 screen命令!
一、什么是Screen?
Screen是一個(gè)非常實(shí)用的終端會(huì)話管理工具,它可以幫助你在多個(gè)虛擬終端(或窗口)之間輕松切換。即使你的 SSH連接意外斷開,也不用擔(dān)心,因?yàn)槟愕倪M(jìn)程會(huì)繼續(xù)運(yùn)行。你可以在任何時(shí)候重新連接并恢復(fù)之前的會(huì)話,就像一切都沒有中斷過一樣。
二、Screen的核心用法
1. 安裝Screen
大多數(shù)Linux發(fā)行版默認(rèn)已安裝 screen,如果沒有,可以使用以下命令安裝:
- Debian/Ubuntu
sudo apt install screen -y
- CentOS/RHEL
sudo yum install screen -y
- Arch Linux
sudo pacman -S screen
2.. 啟動(dòng)一個(gè)新的Screen會(huì)話
screen -S mysession
-S mysession 給會(huì)話起一個(gè)名字(mysession),方便后續(xù)管理。
3. 讓進(jìn)程在后臺(tái)運(yùn)行
假設(shè)你在screen中運(yùn)行了一個(gè)任務(wù):
ollama run deepseek-r1:7b
然后,你可以使用快捷鍵 Ctrl + A 后按 D,會(huì)話就會(huì)后臺(tái)運(yùn)行,即使SSH斷開也不會(huì)受影響。
4. 重新連接Screen會(huì)話
如果SSH斷開或你手動(dòng)退出了screen,可以使用以下命令恢復(fù)會(huì)話:
screen -r mysession
如果不記得會(huì)話名稱,可以先列出所有screen會(huì)話:
screen -ls
輸出示例:
root@racknerd-a7aa50:~# screen -ls
There is a screen on:
41964.mysession (02/08/2025 07:37:20 AM) (Detached)
1 Socket in /run/screen/S-root.
root@racknerd-a7aa50:~#
然后,你可以恢復(fù)任意會(huì)話:
screen -r 41964
5. 關(guān)閉一個(gè)Screen會(huì)話
在screen會(huì)話中,輸入 exit 即可關(guān)閉:
exit
或者按Ctrl + D退出。
三、Screen高級(jí)用法
1. 共享Screen會(huì)話(多人協(xié)作)
如果你想與其他用戶共享會(huì)話,例如遠(yuǎn)程協(xié)助排查問題,可以讓另一位用戶運(yùn)行:
screen -x mysession
這樣,他就能看到你的操作,并進(jìn)行協(xié)同輸入。
2. 鎖定 Screen 會(huì)話
如果你臨時(shí)離開但不想讓別人操作,可以使用Ctrl + A后按 X,然后輸入密碼進(jìn)行鎖定。如下圖所示:
3. 自定義Screen 配置
Screen的默認(rèn)行為可以通過 ~/.screenrc 配置文件修改,比如啟動(dòng)時(shí)自動(dòng)命名窗口:
startup_message off
caption always "%{= kw}%-w%{= gW}%n %t%{-}%+w"
四、Screen vs Tmux:哪個(gè)更好?
screen 和 tmux 都是終端復(fù)用工具,tmux 功能更強(qiáng)大,但 screen 更輕量,默認(rèn)預(yù)裝在許多 Linux 發(fā)行版上。
功能 | Screen | Tmux |
終端會(huì)話保持 | ? | ? |
多窗口管理 | ? | ?(更強(qiáng)大) |
窗口分割 | ? | ? |
自定義配置 | 一般 | 更強(qiáng) |
社區(qū)活躍度 | 低 | 高 |
如果你需要更現(xiàn)代化的功能,比如分割窗口、鼠標(biāo)支持,可以考慮 tmux,但 screen 仍然是一個(gè)簡(jiǎn)單高效的選擇。
五、結(jié)語
screen 是 Linux中非常實(shí)用的終端管理工具,特別適用于遠(yuǎn)程 SSH 連接,能避免因網(wǎng)絡(luò)中斷而丟失任務(wù)進(jìn)程。對(duì)于 DevOps、開發(fā)者、運(yùn)維工程師來說,掌握 screen 可以大大提升工作效率。下次執(zhí)行長(zhǎng)時(shí)間任務(wù)時(shí),記得用 screen 保護(hù)你的進(jìn)程,讓會(huì)話永不掉線!