screen 與 tmux:多工終端機管理
在 Linux 系統管理與開發工作中,我們經常需要執行長時間運行的任務,例如編譯程式、部署伺服器或進行大型數據分析。然而,當 SSH 連線因網路不穩而斷線時,這些未完成的任務往往會無情地終止,導致前功盡棄。為了解決這個痛點,「終端機多工工具」便成為了每位 Linux 使用者的必備技能。其中,screen 與 tmux 是最為廣泛使用的兩大解決方案。本文将深入解析這兩者的差異、核心指令與實際應用場景,幫助你掌握終端機的多工管理藝術。
為什麼需要終端機多工工具?
傳統上,我們依賴 SSH 連線來操作遠端伺服器。一旦連線中斷,該連線下所有正在執行的程式都會收到 SIGHUP 訊號並隨之停止。screen 和 tmux 的核心價值在於它們創建了一個「虛擬終端機」,這個終端機運行在伺服器端的背景中,與你的 SSH 連線解耦。即使你關閉了本地端的終視窗或網路中斷,只要伺服器端服務仍在運行,你的工作就不會受到影響。
此外,它們都支援「分離」(detach)與「重新連接」(attach)功能,允許你在不同裝置間無縫切換工作環境,極大提升了系統管理的彈性與效率。
Screen:經典穩健的選擇
screen 是歷史悠久的終端機多工工具,預設安裝於大多數 Linux 發行版中。它的指令語法較為傳統,雖然功能強大,但快捷鍵組合相對複雜。
基本操作
啟動一個新的 session 並給予名稱(便於識別):
screen -S my_project
進入 session 後,你可以像平常一樣執行指令。若要暫時離開(detach)而不終止程式,請按下 Ctrl+a 後再按 d。
[detached from 12345.my_project]
若要重新連接(attach)到之前離開的 session:
screen -r my_project
若有多個 session,可使用 screen -ls 查看列表,並指定 PID 或名稱來連接。
進階技巧
screen 支援分頁(splitting),允許在同一個視窗中上下或左右分割畫面。按下 Ctrl+a 後,按 S 進行垂直分割,按 | 進行水平分割。切換分頁使用 Ctrl+a 後按 Tab。
Tmux:現代化的多工霸主
相較於 screen,tmux(Terminal Multiplexer)提供了更直觀的快捷鍵設計、更強大的面板管理以及更好的複製模式(copy mode)。對於現代開發者而言,tmux 往往是首選。
基本操作
啟動一個新的 tmux session:
tmux new -s my_dev
若要分離 session,按下 Ctrl+b 後再按 d。
[exited session]
重新連接:
tmux attach -t my_dev
同樣地,使用 tmux ls 列出所有 session。
面板與窗口管理
tmux 的核心優勢在於其靈活的佈局。預設快捷鍵前綴為 Ctrl+b。
- 分割視窗:按下
Ctrl+b後,按%垂直分割,按"水平分割。 - 切換面板:按下
Ctrl+b後,使用方向鍵(h,j,k,l)切換當前焦點所在的面板。 - 調整大小:按下
Ctrl+b後,按:進入命令模式,輸入resize-pane -D 5可將下方面板向下擴展 5 格。
複製模式(Copy Mode)
這是 tmux 最受歡迎的功能之一,允許你像使用 Vim 一樣複製終端機中的文字。
- 按下
Ctrl+b後按[進入複製模式。 - 使用方向鍵移動游標,選取文字。
- 按下
Enter複製選取內容。 - 按下
q退出複製模式。 - 在另一個面板中,按下
Ctrl+b後按]貼上內容。
常見問題與解決方案
1. 無法重新連接 Session
當嘗試執行 tmux attach 或 screen -r 時,若出現「Attached.」或「There is no session.」的錯誤,通常有以下原因:
- Session 已結束:若主程式已執行完畢,session 會自動關閉。請使用
tmux ls確認 session 狀態。 - Zombie Session:有時 SSH 異常斷線會導致 session 處於「已分離但存在」的狀態。可強制刪除:
tmux kill-server # 終止所有 tmux 伺服器 # 或 screen -wipe # 清除 screen 中已死去的 session
2. 快捷鍵衝突
預設的 Ctrl+a (screen) 或 Ctrl+b (tmux) 可能會與某些應用程式(如 Vim 的插件或 Emacs)衝突。解決方法是在 ~/.tmux.conf 中修改前綴鍵。例如,將 tmux 前綴改為 Ctrl+a:
# 在 ~/.tmux.conf 中加入
unbind C-b
set -g prefix C-a
bind C-a send-prefix
小結
screen 與 tmux 都是極其強大的終端機管理工具。screen 勝在普遍性與輕量,適合快速環境下的基本需求;而 tmux 則以其現代化的介面、強大的面板管理與複製模式,成為開發者與系統管理員的首選。無論選擇哪一款,掌握它們都能顯著提升你在 Linux 環境中的工作效率與穩定性。建議初學者從 tmux 開始學習,其直觀的設計將為你帶來更順暢的使用體驗。