tmux 是終端複用器的縮寫,它允許使用者在單個視窗中建立或啟用多個終端(垂直或水平),當你處理不同的問題時,可以在單個視窗中輕鬆存取和控制它們。
它使用用戶端-伺服器模型,允許在使用者之間共用對談,也可以將終端連線到 tmux 對談。我們可以根據需要輕鬆移動或重新排列虛擬控制台。終端對談可以從一個虛擬控制台自由切換到另一個。
tmux 依賴於 libevent
和 ncurses
庫。tmux 在螢幕底部提供了一個狀態行,它顯示當前 tmux 對談的有關資訊,例如當前視窗編號、視窗名稱、使用者名稱、主機名、當前時間和日期。
啟動 tmux 時,它會在一個單獨視窗上建立一個新的對談,並將其顯示在螢幕上。它允許使用者在同一個對談中建立任意數量的視窗。
許多人說它類似於 screen
,但我不這麼認為,因為它提供了許多設定選項。
注意: Ctrl+b
是 tmux 中的預設命令字首,因此,要在 tmux 中執行任何操作,你必須先輸入該字首然後輸入所需的選項。
建議閱讀:
大多數 Linux 系統預設預安裝 tmux 命令。如果沒有,按照以下步驟安裝。
對於 Debian/Ubuntu,使用 APT-GET 命令或 APT 命令來安裝:
$ sudo apt install tmux
對於 RHEL/CentOS,使用 YUM 命令來安裝:
$ sudo yum install tmux
對於 Fedora,使用 DNF 命令來安裝:
$ sudo dnf install tmux
對於 Arch Linux,使用 Pacman 命令來安裝:
$ sudo pacman -S tmux
對於 openSUSE,使用 Zypper 命令來安裝:
$ sudo zypper in tmux
在終端上執行以下命令來啟動 tmux 對談。啟動 tmux 後,它會在一個新視窗中建立新對談,並將使用你的使用者賬戶自動登入到你的預設 shell。
$ tmux
你會得到類似於我們上面的截圖。tmux 附帶狀態列,顯示有關當前對談詳細資訊、日期、時間等。
狀態列資訊如下:
[0]
:它表示由 tmux 伺服器建立的對談號。預設情況下,它從 0 開始。0:bash
:表示對談號、命令列提示符(這裡的 bash
表示 shell 名稱)。*
:這表示該視窗現在處於活動狀態。(LCTT 譯註:tmux 的狀態可以根據需要客製化,也會因環境、版本的不同而不同。)
tmux 允許使用者垂直或水平分割視窗,稱為窗格。每個窗格都包含自己獨立執行的終端範例。我們來看看如何做到這一點。
按下 Ctrl+b, %
來垂直分割窗格。
按下 Ctrl+b, "
來水平分割窗格。
假設,我們建立了一些窗格,希望在它們之間移動,這該怎麼做?如果你不知道怎麼做,那麼使用 tmux 就沒有意義了。使用以下控制鍵執行操作。在窗格之間移動有許多方法。
Ctrl+b, ←
- 選擇左邊的窗格Ctrl+b, →
- 選擇右邊的窗格Ctrl+b, ↑
- 選擇上邊的窗格Ctrl+b, ↓
- 選擇下邊的窗格Ctrl+b, {
- 來向左交換窗格Ctrl+b, }
- 來向右交換窗格Ctrl+b, o
- 切換到下一個窗格(從左到右,從上到下)Ctrl+b, ;
- 移動到先前活動的窗格出於測試目的,我們將在窗格之間移動。現在我們在 pane2
中,它展示了 lsb_release -a
命令的輸出。
我們將移動到 pane0
,它顯示 uname -a
命令的輸出。
你可以在一個終端內開啟任意數量的視窗。
Ctrl+b, c
來建立一個新視窗。Ctrl+b, n
移動到下一個視窗。Ctrl+b, p
移動到上一個視窗。Ctrl+b, 0
~ Ctrl+b, 9
立即移動到特定視窗。Ctrl+b, l
移動到先前選擇的視窗。我有兩個視窗,第一個視窗有三個窗格,其中包含作業系統版本資訊,top
命令輸出和核心資訊。
第二個視窗有兩個窗格,其中包含 Linux 發行版 logo 資訊。使用以下命令執行操作:
按 Ctrl+b, w
以互動方式選擇當前視窗。
你正在一些非常小的窗格中工作,並且你希望將其縮小以進行進一步的工作。要做到這一點,使用以下鍵繫結。
目前我們有三個窗格,我在 pane1
工作,它使用 top
命令顯示系統活動資訊,我將縮放它。
縮放窗格時,它將隱藏所有其它窗格,並只顯示視窗中的縮放窗格。
按 Ctrl+b, z
縮放窗格,並再次按下它使縮放窗格恢復原狀。
要了解窗格編號及其大小,執行以下命令。
按 Ctrl+b, q
可簡單顯示窗格索引。
要知道視窗編號、布局大小,與視窗關聯的窗格數量及其大小等,執行以下命令。
只需執行 tmux list-windows
即可檢視視窗資訊。
你可能需要調整窗格大小來滿足你的要求。你必須按下 Ctrl+b, :
,然後在頁面底部的黃色顏色條上輸入以下詳細資訊。
在上一部分中,我們列印了窗格索引,它同時也顯示了窗格大小。為了測試,我們要向增加 10
個單元。參考以下輸出,該窗格將 pane1 和 pane2 的大小從 55x21
增加到 55x31
。
語法: Ctrl+b, :
然後輸入 resize-pane [options] [cells size]
Ctrl+b, :
然後輸入 resize-pane -D 10
將當前窗格大小向下調整 10 個單元。Ctrl+b, :
然後輸入 resize-pane -U 10
將當前窗格大小向上調整 10 個單元。Ctrl+b, :
然後輸入 resize-pane -L 10
將當前窗格大小向左調整 10 個單元。Ctrl+b, :
然後輸入 resize-pane -R 10
將當前窗格大小向右調整 10 個單元。tmux 最強大的功能之一是能夠在需要時分離和重新連線對談。
執行一個長時間執行的進程,然後按下 Ctrl+b
,接著按 d
,通過離開正在執行的進程安全地分離你的 tmux 對談。
建議閱讀: 如何在斷開 SSH 對談後保持進程/命令繼續執行
現在,執行一個長時間執行的進程。出於演示目的,我們將把此伺服器備份移動到另一個遠端伺服器以進行災難恢復(DR)。
$ rsync -avzhe ssh /backup [email protected]:/backups/week-1/
在分離 tmux 對談之後,你將獲得類似下面的輸出。
[detached (from session 0)]
執行以下命令以列出可用的 tmux 對談。
$ tmux ls0: 3 windows (created Tue Jan 30 06:17:47 2018) [109x45]
現在,使用適當的對談 ID 重新連線 tmux 對談,如下所示:
$ tmux attach -t 0
只需在相應的窗格中輸入 exit
或按下 Ctrl-d
即可關閉它,和終端關閉類似。要關閉視窗,按下 Ctrl+b, &
。
好了,就到這裡了,希望你喜歡上它。