為什么要用tmux
tmux是什么?tmux是linux中一種管理窗口的程序。那么問題來了:Mac自帶的Iterm2很好用啊。既支持多標(biāo)簽,也支持窗體內(nèi)部Panel的分割,為什么還要用tmux?其實,多標(biāo)簽和分割窗體只是tmux的部分功能。用tmux的主要原因是它提供了一個窗體組隨時存儲和恢復(fù)的功能??纯匆韵碌氖褂脠鼍笆欠襁m合你:
公司臺式機開了一堆vim和log打印窗口下班了。到家后靈感突發(fā),想要繼續(xù)coding,登陸VPN,SSH連上臺式后發(fā)現(xiàn)又要重新打開各種窗口,瞬間沒心情了。。。FML!這個時候你就可以在你的公司臺式機上裝個tmux。同一組工作環(huán)境,在多處共享。
公司服務(wù)器上調(diào)試程序,開了一堆窗口。出去吃了個飯,發(fā)現(xiàn)SSH超時了,broken pipe。重頭開始。。。FML!如果你之前使用了tmux就不會有這樣的問題,attach就能找回原來打開的那些窗口。
tmux的基本概念
我們先來理解下tmux的幾個元素。tmux的主要元素分為三層:
Session 一組窗口的集合,通常用來概括同一個任務(wù)。session可以有自己的名字便于任務(wù)之間的切換。
Window 單個可見窗口。Windows有自己的編號,也可以認(rèn)為和ITerm2中的Tab類似。
Pane 窗格,被劃分成小塊的窗口,類似于Vim中 C-w +v 后的效果。
為了更好的理解,下面是三個元素在tmux中的具體展現(xiàn)。

可以看到Session總在tmux的左下角顯示,通常會為他命名。例如我正在寫博客,開了很多窗口那么我就會把這組窗口命名為blog方便之后的重連和切換。而Window也會在最下方以一種Tab的形式展現(xiàn)。每個window都有自己的需要,也會以當(dāng)前活動進(jìn)程的名字命名。而Pane就比較好理解,即把單個窗口分割成若干個小塊后的元素。
CentOS下安裝
首先我是用yum install tmux嘗試安裝的。估計沒有源,沒有找到tmux。所以習(xí)慣性直接找源代碼安裝。
但是其中有依賴,需要先安裝libevent。
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xzvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure make
make install
然后再下載源碼安裝tmux
git clone git://git.code.sf.net/p/tmux/tmux-code tmux
cd tmux
sh autogen.sh
./configure make
make install
過程中遇到了兩個報錯,解決都比較簡單,當(dāng)然是查閱資料后。
問題1:
期間我遇到了執(zhí)行autogen.sh 報錯,原因是我沒有安裝automake。這個直接yum install automake就簡單解決了。
問題2:
執(zhí)行的時候遇到
libevent-2.0.so.5: cannot open shared object file: No such file or directory
的報錯,解決辦法也比較簡單,既然找不到,那就換個找得到的地方唄。
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5 # 32位系統(tǒng)
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5 # 64位系統(tǒng)
使用和快捷鍵
直接在命令行輸入tmux即可進(jìn)入tmux的模式。
tmux主要有windows窗體操作和Pane操作,個人覺得windows對于我來說,意義不大(并不是說windows模式?jīng)]適用場景),所以這里主要講下Pane的相關(guān)操作。
快捷鍵
tmux的快捷鍵都要先按C-b(Ctrl-b)。然后再按下面表格內(nèi)容,才能達(dá)到相應(yīng)的效果。
session和其他相關(guān)快捷鍵
快捷鍵 |
功能 |
C-z |
關(guān)閉tmux. |
: |
進(jìn)入tmux命令行模式. |
? |
列出所有快捷鍵. |
t |
顯示時間. |
d |
退出當(dāng)前tmux客戶端,tmux后臺運行. |
$ |
重命名當(dāng)前session. |
s |
切換session 顯示所有session并切換到某一個session. |
( |
切換session 切換到上一個session. |
) |
切換session 切換到下一個session. |
L |
切換session 到前一個活躍的session. |
window相關(guān)快捷鍵
快捷鍵 |
功能 |
c |
新增一個window. |
|
退出當(dāng)前window. |
, |
重命名當(dāng)前window. |
l |
跳轉(zhuǎn)到上一個所在window. |
i |
顯示當(dāng)前window的信息. |
w |
切換window 顯示所有window并切換window. |
0 to 9 |
切換window 到相應(yīng)編號的window. |
p |
切換window 上一個window. |
n |
切換window 下一個window. |
’ |
切換window 到輸入編號的window. |
f |
切換window 到搜索到的window. |
Space |
改變當(dāng)前window下的pane布局. |
pane相關(guān)快捷鍵
快捷鍵 |
功能 |
! |
從window移除當(dāng)前pane. |
" |
將當(dāng)前pane變成上下兩個pane. |
% |
將當(dāng)前pane變成左右兩個pane. |
x |
關(guān)閉當(dāng)前pane. |
q |
顯示pane的索引. |
z |
最大化或者恢復(fù)當(dāng)前pane. |
{ |
跟前一個pane交換位置. |
} |
跟后一個pane交換位置. |
o |
切換Pane 到下一個pane. |
; |
切換Pane 進(jìn)入到前一個操作過的pane. |
Up, Down Left, Right |
切換Pane 使用方向鍵切換到相應(yīng)方向的pane.
|
可能有些快捷鍵有些出入,可以的話提醒下。另外有些快捷鍵沒有搞懂,而且快捷鍵比較多,個人覺得記得主要的幾個切換快捷鍵就足夠用來。比較tmux只是一個協(xié)助工具,沒有必要在其上面那么用心。加粗的是個人覺得比較實用的。
tmux不中斷session的模式確實很666666,每次連回去就可以快速接上上次結(jié)束的環(huán)境。而且多個pane也非常適合要開啟并監(jiān)控多個服務(wù)的情況。
