進化版 screen - 踢馬克斯 tmux

一、screen 使用上的問題

開始使用 Linux 開發後,screen 就一直是不可或缺的工具。
可幫我隨時隨地回復先前的工作階段,但總有幾個小問題存在:

  • 不正常斷線後無法 re-attach

    在公司的 CentOS,若因各種原因不正常斷線,要再回復連線經常會被卡住。
    家裡的 Debian 比較少發生這種狀況、使用 tcsh 的同事(我用 zsh)也沒碰到。
    我一直沒花時間去了解此問題發生的原因,可以用就好 :p

  • 分割視窗功能過於陽春

    最近有個功能的開發,必須同時監控多份 Log 檔。
    因此開了一個 pietty 做監控,利用 screen 切了多個分割視窗達成我監控的目的。
    screen 沒辦法切垂直的視窗,所以我得另外開一個 pietty 做開發。
    此功能又得開至少兩個瀏覽器來做測試,多任何一個應用程式視窗都會讓我困擾。
    還有的小麻煩是 screen 的分割視窗沒辦法在 detach 後保持

是時間來研究一下湯姆所分享的 tmux,果然他解決了我以上所有問題,也感謝猴巴幫我裝起來 :D

二、tmux 是什麼?

tmux 的全名是 Terminal Multiplexer,也就是終端多工器的意思。
我查了發音應該可唸成「踢馬克思」(若有錯誤請提出指教啦 )。
據說作者也是因為 screen 用起來有許多不方便的地方,才打造了一顆新輪子!

三、screen 與 tmux 的比較

稍微整理一下 screen 與 tmux,大家就會知道 tmux 有多好了。

screen

screen 的架構很簡單,一個 screen 連線只能被一個 SSH 連線存取
一個 screen 可有多個 window
只支援水平分割、同時觀看多個 window


tmux

tmux 管理的東西較多:包括 Session(連線)、Window(視窗)與 Pane(窗格)。

tmux 優點 1 - 可以被多個 SSH 同時連線

tmux Session 可以被多個 SSH 同時連線,這點跟 Screen 很不同。
過去用 screen 你離開辦公桌的電腦,晚上回到家裡繼續工作時,必定得 detach 再 attach。
但是用 tmux 的話,你可以在家裡 attach,隔天到公司 tmux 並不會被 detach
所以若你開兩個 tmux 同時 attach 到同一個 Session 時,可以看到兩個視窗同時動作的有趣畫面喔。
所以在這樣的架構下,你就不用擔心像 screen 不正常斷線無法 detach 再 attach 的問題了。

tmux 優點 2 - 可在 Session 中切換到不同 Session

過去要從 screen 到另一個 screen 得先 detach,
但 tmux 只要用快速鍵(預設 Ctrl-b + s)即可切換到其他 Session
是不是很方便呢?

tmux 優點 3 - 強大的分割視窗

screen 只能做單一水平分割,但是 tmux 可以自由自在地水平或垂直分割
一個窗格被稱為 Pane,分割會被記錄至 Window 保存(screen 只要一 detach 就沒了)
且一個 Pane 可隨時轉換成 WindowPane 調整大小、位置的功能更是完整

四、我的 .tumx.conf

與大多數人相同,我並不想改變 screen 的使用習慣,
仍然設定 Ctrl + a (C-a) 為我的 prefix,以下是我在 tmux 常用的快速鍵:

? 列出所有綁定的 Key
! 將目前的 Pane 獨立成 Window
r 重新整理目前的畫面
$ 重新命名目前的 Session 連線
` 重新命名目前的 Window 視窗
& 重新命名目前的 Window 視窗
o 翻滾吧!Pane
! 將 Pane 獨立成為單一 Window
h 水平分割(上、下)
- 水平分割(上、下)
v 垂直分割(左、右)
| 垂直分割(左、右)
x 移除目前的 Pane
{ 將目前的 Pane 向左移動
} 將目前的 Pane 向右移動
(alt) + 上下左右鍵 調整目前 Pane 的大小
q 顯示 Pane 編號
(Space) 換 Layout

五、如何安裝 tmux ?

可能是我的 Debian 版本較舊,沒辦法使用 apt-get install tmux 直接安裝。
我是依據這一篇文章來做安裝的: Dsawiki: Install Tmux on Ubuntu
其他像是 CentOS 的安裝,建議都是手動下載 build 以下兩個套件:libevent-1.4.x-stable 與 tmux。

你可能感兴趣的:(screen,tmux)