進化版 screen - tmux

此篇文章最近更新時間為2011-10-22 14:48:28 目前共有11篇留言

關於作者 - JosephJ

任職於 Faria。喜好戶外運動、2008 年 5 月完成「跑步環島」。對於新技術跟程式碼有著強烈的偏執狂。

My 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 的架構很簡單,一個 screen 連線只能被一個 SSH 連線存取
一個 screen 可有多個 window
只支援水平分割、同時觀看多個 window


tmux

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。


Comments

  1. josephj 2014-05-20 12:08:34
    vincent,

    可以的,但要看你是不是持續連線
    因為一斷線就無法回存原本的工作階段
  2. vincent 2014-05-18 02:32:25
    这个tmux必须在每台服务器上面安装吗?不是在连接服务器的ubuntu安装就可以了?
  3. spin6lock 2012-08-10 17:33:47
    请问我的tmux pane分隔符变成了xxx和qqq这样是什么问题呢?看博主的截图,竖直的分隔符是|,但是我这里是x,水平的分割符变成了qqq。操作系统是freebsd,虚拟终端是putty
  4. 青岛策划 2011-11-18 16:58:25
    这个倒是可以
  5. Stanley 2011-11-10 01:58:57
    您好
    看到這麼有意志力與勇氣的偶像
    真得很開心!!
    想請教您跑步環台的資訊
    在網路上找不到你的Email或是FB
    若您有看到留言麻煩您回覆我一下
    謝謝您
  6. Tsung 2011-10-26 21:05:31
    呃, 分割線在左右跳動錯亂(變成兩條)... 這個我沒遇過耶.
    但是, 我都用 Linux.. 已經很久沒有用過 putty 了, 所以我說好像也不准. Orz.
    不過我猜應該是 TERM 的問題 Putty (xterm) 與 tmux (screen-256color) 的 不同, 或許從這邊著手看看?
    screen -x 可以參考: http://blog.longwin.com.tw/2009/11/linux-monitor-share-screen-2009/
    只是 screen -x 用起來太複雜, tmux 本身就已經做到了, 方便許多. :)
  7. Gery 2011-10-25 18:53:06
    git clone出来的screen是可以垂直分割的,用ctrl-a |
    另外已经有人提到了-x的multiuser mode,可以不用detach(不过我觉得不太好用)

    我在实际使用当中如果在公司的screen下先ctrl-a x锁住之后,在家里attach上,第二天回到公司看到的screen并没有被detach,还是锁住的状态。虽然不知道为啥,但效果还不错 :)
  8. josephj 2011-10-25 08:58:08
    Enc + mrmoneyc,
    真是慚愧,我還真的沒用過 screen -x :p
    不過用了 tmux 就不用考慮這件事啦 XDD

    Tsung,
    感謝宗豪大的推薦,我來升級看看
    另外你有碰到分割線在左右跳動錯亂(變成兩條)的問題嗎?
    我 Mac 上看沒有,pietty 或 putty 都有
    感覺像是 terminal 的問題
  9. Enc 2011-10-24 14:05:47
    優點 1 指的是 screen -x 嗎 ? (-x Attach to a not detached screen session. (Multi display mode).
  10. mrmoneyc 2011-10-24 12:52:33
    tmux 優點 1 在 screen 裡我想可以用參數 -x 做到

    不過 tmux 視窗分割真的比 screen 強大太多了 :D
  11. Tsung 2011-10-24 12:38:31
    Debian 可以考慮升級囉~ 內建可以直接搜尋安裝的. :)
    而且 Debian 裡面有預設的設定檔, 可以讓 tmux 跟 screen 一模一樣, 再加上 vim 的視窗切割方式(因為 Screen 的視窗切割操作不好用), 應該會比自己自訂的還要好一點.
    可以參考看看: http://blog.longwin.com.tw/2011/04/tmux-learn-screen-config-2011/
暱稱: 必填。
Email: 非必填。若填寫為不公開欄位,僅供站長參考聯繫。
內容: 必填。限 255 個字元以內。
送出

Facebook Comment