Tmux 簡單介紹和使用
Tmux 是一個(gè)終端復(fù)用器(terminal multiplexer),非常有用,屬于常用的開發(fā)工具。
會話與進(jìn)程
命令行的典型使用方式是,打開一個(gè)終端窗口(terminal window,以下簡稱"窗口"),在里面輸入命令。用戶與計(jì)算機(jī)的這種臨時(shí)的交互,稱為一次"會話"(session) 。
會話的一個(gè)重要特點(diǎn)是,窗口與其中啟動的進(jìn)程是連在一起的。打開窗口,會話開始;關(guān)閉窗口,會話結(jié)束,會話內(nèi)部的進(jìn)程也會隨之終止,不管有沒有運(yùn)行完。
一個(gè)典型的例子就是,SSH 登錄遠(yuǎn)程計(jì)算機(jī),打開一個(gè)遠(yuǎn)程窗口執(zhí)行命令。這時(shí),網(wǎng)絡(luò)突然斷線,再次登錄的時(shí)候,是找不回上一次執(zhí)行的命令的。因?yàn)樯弦淮?SSH 會話已經(jīng)終止了,里面的進(jìn)程也隨之消失了。
為了解決這個(gè)問題,會話與窗口可以"解綁":窗口關(guān)閉時(shí),會話并不終止,而是繼續(xù)運(yùn)行,等到以后需要的時(shí)候,再讓會話"綁定"其他窗口
Tmux 的作用
Tmux 就是會話與窗口的"解綁"工具,將它們徹底分離。
(1)它允許在單個(gè)窗口中,同時(shí)訪問多個(gè)會話。這對于同時(shí)運(yùn)行多個(gè)命令行程序很有用。
(2) 它可以讓新窗口"接入"已經(jīng)存在的會話。
(3)它允許每個(gè)會話有多個(gè)連接窗口,因此可以多人實(shí)時(shí)共享會話。
(4)它還支持窗口任意的垂直和水平拆分。
類似的終端復(fù)用器還有 GNU Screen。Tmux 與它功能相似,但是更易用,也更強(qiáng)大。
基本用法
安裝
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
啟動與退出
安裝完成后,鍵入tmux命令,就進(jìn)入了 Tmux 窗口。
上面命令會啟動 Tmux 窗口,底部有一個(gè)狀態(tài)欄。狀態(tài)欄的左側(cè)是窗口信息(編號和名稱),右側(cè)是系統(tǒng)信息。


按下Ctrl+d或者顯式輸入exit命令,就可以退出 Tmux 窗口。
前綴鍵
Tmux 窗口有大量的快捷鍵。所有快捷鍵都要通過前綴鍵喚起。默認(rèn)的前綴鍵是Ctrl+b,即先按下Ctrl+b,快捷鍵才會生效。
舉例來說,幫助命令的快捷鍵是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就會顯示幫助信息。
然后,按下 ESC 鍵或q鍵,就可以退出幫助。
會話管理
新建會話
第一個(gè)啟動的 Tmux 窗口,編號是0,第二個(gè)窗口的編號是1,以此類推。這些窗口對應(yīng)的會話,就是 0 號會話、1 號會話。
使用編號區(qū)分會話,不太直觀,更好的方法是為會話起名。
$ tmux new -s <session-name>
上面命令新建一個(gè)指定名稱的會話。
分離會話
在 Tmux 窗口中,按下Ctrl+b d或者輸入tmux detach命令,就會將當(dāng)前會話與窗口分離。
$ tmux detach
上面命令執(zhí)行后,就會退出當(dāng)前 Tmux 窗口,但是會話和里面的進(jìn)程仍然在后臺運(yùn)行。
tmux ls命令可以查看當(dāng)前所有的 Tmux 會話。
$ tmux ls
# or
$ tmux list-session
接入會話
tmux attach命令用于重新接入某個(gè)已存在的會話。
# 使用會話編號
$ tmux attach -t 0
# 使用會話名稱
$ tmux attach -t <session-name>
殺死會話
tmux kill-session命令用于殺死某個(gè)會話。
# 使用會話編號
$ tmux kill-session -t 0
# 使用會話名稱
$ tmux kill-session -t <session-name>
切換會話
tmux switch命令用于切換會話。
# 使用會話編號
$ tmux switch -t 0
# 使用會話名稱
$ tmux switch -t <session-name>
重命名會話
tmux rename-session命令用于重命名會話。
$ tmux rename-session -t 0 <new-name>
上面命令將0號會話重命名。
最簡操作流程
綜上所述,以下是 Tmux 的最簡操作流程。
新建會話tmux new -s my_session。
在 Tmux 窗口運(yùn)行所需的程序。
按下快捷鍵Ctrl+b d將會話分離。
下次使用時(shí),重新連接到會話tmux attach-session -t my_session。