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