它允許用戶在單個窗口中創(chuàng)建或啟用多個終端(垂直或水平),當(dāng)你處理不同的問題時,可以在單個窗口中輕松訪問和控制它們。
-- Magesh Maruthamuthu
tmux 是 終端復(fù)用器(terminal multiplexer)的縮寫,它允許用戶在單個窗口中創(chuàng)建或啟用多個終端(垂直或水平),當(dāng)你處理不同的問題時,可以在單個窗口中輕松訪問和控制它們。
它使用客戶端-服務(wù)器模型,允許在用戶之間共享會話,也可以將終端連接到 tmux 會話。我們可以根據(jù)需要輕松移動或重新排列虛擬控制臺。終端會話可以從一個虛擬控制臺自由切換到另一個。
tmux 依賴于 libevent 和 ncurses 庫。tmux 在屏幕底部提供了一個狀態(tài)行,它顯示當(dāng)前 tmux 會話的有關(guān)信息,例如當(dāng)前窗口編號、窗口名稱、用戶名、主機(jī)名、當(dāng)前時間和日期。
啟動 tmux 時,它會在一個單獨(dú)窗口上創(chuàng)建一個新的會話,并將其顯示在屏幕上。它允許用戶在同一個會話中創(chuàng)建任意數(shù)量的窗口。
許多人說它類似于 screen,但我不這么認(rèn)為,因?yàn)樗峁┝嗽S多配置選項。
注意: Ctrl+b 是 tmux 中的默認(rèn)命令前綴,因此,要在 tmux 中執(zhí)行任何操作,你必須先輸入該前綴然后輸入所需的選項。
建議閱讀:
大多數(shù) Linux 系統(tǒng)默認(rèn)預(yù)安裝 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
在終端上運(yùn)行以下命令來啟動 tmux 會話。啟動 tmux 后,它會在一個新窗口中創(chuàng)建新會話,并將使用你的用戶賬戶自動登錄到你的默認(rèn) shell。
$ tmux
你會得到類似于我們上面的截圖。tmux 附帶狀態(tài)欄,顯示有關(guān)當(dāng)前會話詳細(xì)信息、日期、時間等。
狀態(tài)欄信息如下:
(LCTT 譯注:tmux 的狀態(tài)可以根據(jù)需要定制,也會因環(huán)境、版本的不同而不同。)
tmux 允許用戶垂直或水平分割窗口,稱為窗格。每個窗格都包含自己獨(dú)立運(yùn)行的終端實(shí)例。我們來看看如何做到這一點(diǎn)。
按下 Ctrl+b, % 來垂直分割窗格。
按下 Ctrl+b, " 來水平分割窗格。
假設(shè),我們創(chuàng)建了一些窗格,希望在它們之間移動,這該怎么做?如果你不知道怎么做,那么使用 tmux 就沒有意義了。使用以下控制鍵執(zhí)行操作。在窗格之間移動有許多方法。
出于測試目的,我們將在窗格之間移動。現(xiàn)在我們在 pane2 中,它展示了 lsb_release -a 命令的輸出。
我們將移動到 pane0,它顯示 uname -a 命令的輸出。
你可以在一個終端內(nèi)打開任意數(shù)量的窗口。
我有兩個窗口,第一個窗口有三個窗格,其中包含操作系統(tǒng)版本信息,top 命令輸出和內(nèi)核信息。
第二個窗口有兩個窗格,其中包含 Linux 發(fā)行版 logo 信息。使用以下命令執(zhí)行操作:
按 Ctrl+b, w 以交互方式選擇當(dāng)前窗口。
你正在一些非常小的窗格中工作,并且你希望將其縮小以進(jìn)行進(jìn)一步的工作。要做到這一點(diǎn),使用以下鍵綁定。
目前我們有三個窗格,我在 pane1 工作,它使用 top 命令顯示系統(tǒng)活動信息,我將縮放它。
縮放窗格時,它將隱藏所有其它窗格,并只顯示窗口中的縮放窗格。
按 Ctrl+b, z 縮放窗格,并再次按下它使縮放窗格恢復(fù)原狀。
要了解窗格編號及其大小,運(yùn)行以下命令。
按 Ctrl+b, q 可簡單顯示窗格索引。
要知道窗口編號、布局大小,與窗口關(guān)聯(lián)的窗格數(shù)量及其大小等,運(yùn)行以下命令。
只需運(yùn)行 tmux list-windows 即可查看窗口信息。
你可能需要調(diào)整窗格大小來滿足你的要求。你必須按下 Ctrl+b, :,然后在頁面底部的黃色顏色條上輸入以下詳細(xì)信息。
在上一部分中,我們打印了窗格索引,它同時也顯示了窗格大小。為了測試,我們要向增加 10 個單元。參考以下輸出,該窗格將 pane1 和 pane2 的大小從 55x21 增加到 55x31。
語法: Ctrl+b, : 然后輸入 resize-pane [options] [cells size]
tmux 最強(qiáng)大的功能之一是能夠在需要時分離和重新連接會話。
運(yùn)行一個長時間運(yùn)行的進(jìn)程,然后按下 Ctrl+b,接著按 d,通過離開正在運(yùn)行的進(jìn)程安全地分離你的 tmux 會話。
建議閱讀: 如何在斷開 SSH 會話后保持進(jìn)程/命令繼續(xù)運(yùn)行
現(xiàn)在,運(yùn)行一個長時間運(yùn)行的進(jìn)程。出于演示目的,我們將把此服務(wù)器備份移動到另一個遠(yuǎn)程服務(wù)器以進(jìn)行災(zāi)難恢復(fù)(DR)。
$ rsync -avzhe ssh /backup root@192.168.0.161:/backups/week-1/
在分離 tmux 會話之后,你將獲得類似下面的輸出。
[detached (from session 0)]
運(yùn)行以下命令以列出可用的 tmux 會話。
$ tmux ls
0: 3 windows (created Tue Jan 30 06:17:47 2018) [109x45]
現(xiàn)在,使用適當(dāng)?shù)臅?ID 重新連接 tmux 會話,如下所示:
$ tmux attach -t 0
只需在相應(yīng)的窗格中輸入 exit 或按下 Ctrl-d 即可關(guān)閉它,和終端關(guān)閉類似。要關(guān)閉窗口,按下 Ctrl+b, &。
好了,就到這里了,希望你喜歡上它。
via: https://www.2daygeek.com/tmux-a-powerful-terminal-multiplexer-emulator-for-linux/
作者: Magesh Maruthamuthu 譯者: MjSeven 校對: wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國 榮譽(yù)推出
tmux 是一個類似于 Screen 終端復(fù)用的工具,它能夠在終端出現(xiàn)意外的情況下,確保你的程序還在繼續(xù)運(yùn)行,不會中斷;還能夠?qū)⒁粋€終端窗口分離成多個會話,在多任務(wù)執(zhí)行時,可以提供很大的便利。
tmux 在 Ubuntu 中默認(rèn)已經(jīng)安裝了,但在 CentOS 上需要另外安裝
[root@localhost ~]# yum install tmux -y
創(chuàng)建 tmux 會話
it@serverc:~$ tmux new-session -s test
通過 exit 命令或Ctrl+D退出 tmux 會話
it@serverc:~$ exit
當(dāng)窗口關(guān)閉或網(wǎng)絡(luò)中斷,你可以通過 tmux attach-session 恢復(fù) tmux 會話,tmux 會話內(nèi)原來運(yùn)行的任務(wù)還在繼續(xù)運(yùn)行;
it@serverc:~$ tmux attach-session -t test
如果你不在會話的名稱,可以通過 tmux ls 查看當(dāng)前已經(jīng)打開的 tmux 會話
it@serverc:~$ tmux ls
test: 2 windows (created Fri Jan 15 00:49:12 2021)
打開 tmux 會話,通過按Ctrl+B,然后再按C在同一個窗口的創(chuàng)建一個新的 tmux 窗口
在窗口的最下面會有顯示,你當(dāng)前已經(jīng)打開了幾個窗口,我這邊已經(jīng)打開了 3 個窗口,它們的編號是 0, 1,2;
你可以通過按Ctrl+B,然后再按它們的編號,打開到對應(yīng)的窗口,如,先按Ctrl+B,然后按 0,表示切換到編號為 0 的窗口;
哪個 bash 后面有 * 號,表示當(dāng)前打開的就是哪個 bash 窗口,如圖所示,當(dāng)前打開的 bash 窗口是 0 號 bash 窗口;
如果想要關(guān)閉某個 bash 窗口,你可以先切換到你想要關(guān)閉的 bash 窗口,按Ctrl+B,然后按X,然后窗口下面會有一個提示,詢問你是否結(jié)束這個 bash 窗口,按Y;
但有些情況,我們需要對比兩個 bash 窗口的內(nèi)容,這樣切換比較麻煩,我們可以通過按Ctrl+B,然后按%( Shirft 加數(shù)字鍵),進(jìn)行左右分屏;
* 注意,這個左右分屏是完全在 1號 bash 窗口分出來的,和 0號 bash 窗口沒有關(guān)系,新切換出來的是一個新的終端;
你也可以通過按Ctrl+B,然后按"(Shift 加逗號鍵),進(jìn)行垂直分屏
在多窗口時,你可以通過按Ctrl+B,然后按O切換到下一個屏幕(先從上到下,然后從左到右),或者按Ctrl+B,然后按;在當(dāng)前窗口和上一個窗口之間切換;