一、Tmux 是什麼?
1.1 會話與進程
命令行的典型使用方式是,打開一個終端窗口(terminal window,以下簡稱"窗口"),在裏面輸入命令。用戶與計算機的這種臨時的交互,稱爲一次"會話"(session) 。
會話的一個重要特點是,窗口與其中啓動的進程是連在一起的。打開窗口,會話開始;關閉窗口,會話結束,會話內部的進程也會隨之終止,不管有沒有運行完。
一個典型的例子就是,SSH 登錄遠程計算機,打開一個遠程窗口執行命令。這時,網絡突然斷線,再次登錄的時候,是找不回上一次執行的命令的。因爲上一次 SSH 會話已經終止了,裏面的進程也隨之消失了。
爲了解決這個問題,會話與窗口可以"解綁":窗口關閉時,會話並不終止,而是繼續運行,等到以後需要的時候,再讓會話"綁定"其他窗口。
1.2 Tmux 的作用
Tmux 就是會話與窗口的"解綁"工具,將它們徹底分離。
(1)它允許在單個窗口中,同時訪問多個會話。這對於同時運行多個命令行程序很有用。
(2) 它可以讓新窗口"接入"已經存在的會話。
(3)它允許每個會話有多個連接窗口,因此可以多人實時共享會話。
(4)它還支持窗口任意的垂直和水平拆分。
類似的終端複用器還有 GNU Screen。Tmux 與它功能相似,但是更易用,也更強大。
二、基本用法
2.1 安裝
Tmux 一般需要自己安裝。
# Ubuntu 或 Debian $ sudo apt-get install tmux # CentOS 或 Fedora $ sudo yum install tmux # Mac $ brew install tmux
2.2 啓動與退出
安裝完成後,鍵入tmux
命令,就進入了 Tmux 窗口。
$ tmux
上面命令會啓動 Tmux 窗口,底部有一個狀態欄。狀態欄的左側是窗口信息(編號和名稱),右側是系統信息。
按下Ctrl+d
或者顯式輸入exit
命令,就可以退出 Tmux 窗口。
$ exit
2.3 前綴鍵
Tmux 窗口有大量的快捷鍵。所有快捷鍵都要通過前綴鍵喚起。默認的前綴鍵是Ctrl+b
,即先按下Ctrl+b
,快捷鍵纔會生效。
舉例來說,幫助命令的快捷鍵是Ctrl+b ?
。它的用法是,在 Tmux 窗口中,先按下Ctrl+b
,再按下?
,就會顯示幫助信息。
然後,按下 ESC 鍵或q
鍵,就可以退出幫助。
三、會話管理
3.1 新建會話
第一個啓動的 Tmux 窗口,編號是0
,第二個窗口的編號是1
,以此類推。這些窗口對應的會話,就是 0 號會話、1 號會話。
使用編號區分會話,不太直觀,更好的方法是爲會話起名。
$ tmux new -s <session-name>
上面命令新建一個指定名稱的會話。
3.2 分離會話
在 Tmux 窗口中,按下Ctrl+b d
或者輸入tmux detach
命令,就會將當前會話與窗口分離。
$ tmux detach
上面命令執行後,就會退出當前 Tmux 窗口,但是會話和裏面的進程仍然在後臺運行。
tmux ls
命令可以查看當前所有的 Tmux 會話。
$ tmux ls # or $ tmux list-session
3.3 接入會話
tmux attach
命令用於重新接入某個已存在的會話。
# 使用會話編號 $ tmux attach -t 0 # 使用會話名稱 $ tmux attach -t <session-name>
3.4 殺死會話
tmux kill-session
命令用於殺死某個會話。
# 使用會話編號 $ tmux kill-session -t 0 # 使用會話名稱 $ tmux kill-session -t <session-name>
3.5 切換會話
tmux switch
命令用於切換會話。
# 使用會話編號 $ tmux switch -t 0 # 使用會話名稱 $ tmux switch -t <session-name>
3.6 重命名會話
tmux rename-session
命令用於重命名會話。
$ tmux rename-session -t 0 <new-name>
上面命令將0號會話重命名。
3.7 會話快捷鍵
下面是一些會話相關的快捷鍵。
Ctrl+b d
:分離當前會話。Ctrl+b s
:列出所有會話。Ctrl+b $
:重命名當前會話。
四、最簡操作流程
綜上所述,以下是 Tmux 的最簡操作流程。
- 新建會話
tmux new -s my_session
。- 在 Tmux 窗口運行所需的程序。
- 按下快捷鍵
Ctrl+b d
將會話分離。- 下次使用時,重新連接到會話
tmux attach-session -t my_session
。
七、其他命令
下面是一些其他命令。
# 列出所有快捷鍵,及其對應的 Tmux 命令 $ tmux list-keys # 列出所有 Tmux 命令及其參數 $ tmux list-commands # 列出當前所有 Tmux 會話的信息 $ tmux info # 重新加載當前的 Tmux 配置 $ tmux source-file ~/.tmux.conf