tmux:適用于重度命令行Linux用戶(hù)的終端復(fù)用器
tmux 是終端復(fù)用器的縮寫(xiě),它允許用戶(hù)在單個(gè)窗口中創(chuàng)建或啟用多個(gè)終端(垂直或水平),當(dāng)你處理不同的問(wèn)題時(shí),可以在單個(gè)窗口中輕松訪(fǎng)問(wèn)和控制它們。
它使用客戶(hù)端-服務(wù)器模型,允許在用戶(hù)之間共享會(huì)話(huà),也可以將終端連接到 tmux 會(huì)話(huà)。我們可以根據(jù)需要輕松移動(dòng)或重新排列虛擬控制臺(tái)。終端會(huì)話(huà)可以從一個(gè)虛擬控制臺(tái)自由切換到另一個(gè)。
tmux 依賴(lài)于 libevent
和 ncurses
庫(kù)。tmux 在屏幕底部提供了一個(gè)狀態(tài)行,它顯示當(dāng)前 tmux 會(huì)話(huà)的有關(guān)信息,例如當(dāng)前窗口編號(hào)、窗口名稱(chēng)、用戶(hù)名、主機(jī)名、當(dāng)前時(shí)間和日期。
啟動(dòng) tmux 時(shí),它會(huì)在一個(gè)單獨(dú)窗口上創(chuàng)建一個(gè)新的會(huì)話(huà),并將其顯示在屏幕上。它允許用戶(hù)在同一個(gè)會(huì)話(huà)中創(chuàng)建任意數(shù)量的窗口。
許多人說(shuō)它類(lèi)似于 screen
,但我不這么認(rèn)為,因?yàn)樗峁┝嗽S多配置選項(xiàng)。
注意: Ctrl+b
是 tmux 中的默認(rèn)命令前綴,因此,要在 tmux 中執(zhí)行任何操作,你必須先輸入該前綴然后輸入所需的選項(xiàng)。
tmux 特性
- 創(chuàng)建任意數(shù)量的窗口
- 在一個(gè)窗口中創(chuàng)建任意數(shù)量的窗格
- 它允許垂直和水平分割
- 分離并重新連接窗口
- 客戶(hù)端-服務(wù)器架構(gòu),這允許用戶(hù)之間共享會(huì)話(huà)
- tmux 提供許多配置技巧
如何安裝 tmux 命令
大多數(shù) Linux 系統(tǒng)默認(rèn)預(yù)安裝 tmux 命令。如果沒(méi)有,按照以下步驟安裝。
對(duì)于 Debian/Ubuntu,使用 APT-GET 命令或 APT 命令來(lái)安裝:
$ sudo apt install tmux
對(duì)于 RHEL/CentOS,使用 YUM 命令來(lái)安裝:
$ sudo yum install tmux
對(duì)于 Fedora,使用 DNF 命令來(lái)安裝:
$ sudo dnf install tmux
對(duì)于 Arch Linux,使用 Pacman 命令來(lái)安裝:
$ sudo pacman -S tmux
對(duì)于 openSUSE,使用 Zypper 命令來(lái)安裝:
$ sudo zypper in tmux
如何使用 tmux
在終端上運(yùn)行以下命令來(lái)啟動(dòng) tmux 會(huì)話(huà)。啟動(dòng) tmux 后,它會(huì)在一個(gè)新窗口中創(chuàng)建新會(huì)話(huà),并將使用你的用戶(hù)賬戶(hù)自動(dòng)登錄到你的默認(rèn) shell。
$ tmux
你會(huì)得到類(lèi)似于我們上面的截圖。tmux 附帶狀態(tài)欄,顯示有關(guān)當(dāng)前會(huì)話(huà)詳細(xì)信息、日期、時(shí)間等。
狀態(tài)欄信息如下:
[0]
:它表示由 tmux 服務(wù)器創(chuàng)建的會(huì)話(huà)號(hào)。默認(rèn)情況下,它從 0 開(kāi)始。0:bash
:表示會(huì)話(huà)號(hào)、命令行提示符(這里的bash
表示 shell 名稱(chēng))。*
:這表示該窗口現(xiàn)在處于活動(dòng)狀態(tài)。- 主機(jī)名:顯示服務(wù)器的完全主機(jī)名。
- 日期與時(shí)間:顯示當(dāng)前日期和時(shí)間。
(LCTT 譯注:tmux 的狀態(tài)可以根據(jù)需要定制,也會(huì)因環(huán)境、版本的不同而不同。)
如何拆分窗口
tmux 允許用戶(hù)垂直或水平分割窗口,稱(chēng)為窗格。每個(gè)窗格都包含自己獨(dú)立運(yùn)行的終端實(shí)例。我們來(lái)看看如何做到這一點(diǎn)。
按下 Ctrl+b, %
來(lái)垂直分割窗格。
按下 Ctrl+b, "
來(lái)水平分割窗格。
如何在窗格之間移動(dòng)
假設(shè),我們創(chuàng)建了一些窗格,希望在它們之間移動(dòng),這該怎么做?如果你不知道怎么做,那么使用 tmux 就沒(méi)有意義了。使用以下控制鍵執(zhí)行操作。在窗格之間移動(dòng)有許多方法。
- 按
Ctrl+b, ←
- 選擇左邊的窗格 - 按
Ctrl+b, →
- 選擇右邊的窗格 - 按
Ctrl+b, ↑
- 選擇上邊的窗格 - 按
Ctrl+b, ↓
- 選擇下邊的窗格 - 按
Ctrl+b, {
- 來(lái)向左交換窗格 - 按
Ctrl+b, }
- 來(lái)向右交換窗格 - 按
Ctrl+b, o
- 切換到下一個(gè)窗格(從左到右,從上到下) - 按
Ctrl+b, ;
- 移動(dòng)到先前活動(dòng)的窗格
出于測(cè)試目的,我們將在窗格之間移動(dòng)?,F(xiàn)在我們?cè)?nbsp;pane2
中,它展示了 lsb_release -a
命令的輸出。
我們將移動(dòng)到 pane0
,它顯示 uname -a
命令的輸出。
如何打開(kāi)/創(chuàng)建新窗口
你可以在一個(gè)終端內(nèi)打開(kāi)任意數(shù)量的窗口。
- 按
Ctrl+b, c
來(lái)創(chuàng)建一個(gè)新窗口。 - 按
Ctrl+b, n
移動(dòng)到下一個(gè)窗口。 - 按
Ctrl+b, p
移動(dòng)到上一個(gè)窗口。 - 按
Ctrl+b, 0
~Ctrl+b, 9
立即移動(dòng)到特定窗口。 - 按
Ctrl+b, l
移動(dòng)到先前選擇的窗口。
我有兩個(gè)窗口,第一個(gè)窗口有三個(gè)窗格,其中包含操作系統(tǒng)版本信息,top
命令輸出和內(nèi)核信息。
第二個(gè)窗口有兩個(gè)窗格,其中包含 Linux 發(fā)行版 logo 信息。使用以下命令執(zhí)行操作:
按 Ctrl+b, w
以交互方式選擇當(dāng)前窗口。
如何縮放窗格
你正在一些非常小的窗格中工作,并且你希望將其縮小以進(jìn)行進(jìn)一步的工作。要做到這一點(diǎn),使用以下鍵綁定。
目前我們有三個(gè)窗格,我在 pane1
工作,它使用 top
命令顯示系統(tǒng)活動(dòng)信息,我將縮放它。
縮放窗格時(shí),它將隱藏所有其它窗格,并只顯示窗口中的縮放窗格。
按 Ctrl+b, z
縮放窗格,并再次按下它使縮放窗格恢復(fù)原狀。
顯示窗格信息
要了解窗格編號(hào)及其大小,運(yùn)行以下命令。
按 Ctrl+b, q
可簡(jiǎn)單顯示窗格索引。
顯示窗口信息
要知道窗口編號(hào)、布局大小,與窗口關(guān)聯(lián)的窗格數(shù)量及其大小等,運(yùn)行以下命令。
只需運(yùn)行 tmux list-windows
即可查看窗口信息。
如何調(diào)整窗格大小
你可能需要調(diào)整窗格大小來(lái)滿(mǎn)足你的要求。你必須按下 Ctrl+b, :
,然后在頁(yè)面底部的黃色顏色條上輸入以下詳細(xì)信息。
在上一部分中,我們打印了窗格索引,它同時(shí)也顯示了窗格大小。為了測(cè)試,我們要向增加 10
個(gè)單元。參考以下輸出,該窗格將 pane1 和 pane2 的大小從 55x21
增加到 55x31
。
語(yǔ)法: Ctrl+b, :
然后輸入 resize-pane [options] [cells size]
Ctrl+b, :
然后輸入resize-pane -D 10
將當(dāng)前窗格大小向下調(diào)整 10 個(gè)單元。Ctrl+b, :
然后輸入resize-pane -U 10
將當(dāng)前窗格大小向上調(diào)整 10 個(gè)單元。Ctrl+b, :
然后輸入resize-pane -L 10
將當(dāng)前窗格大小向左調(diào)整 10 個(gè)單元。Ctrl+b, :
然后輸入resize-pane -R 10
將當(dāng)前窗格大小向右調(diào)整 10 個(gè)單元。
分離并重新連接 tmux 會(huì)話(huà)
tmux 強(qiáng)大的功能之一是能夠在需要時(shí)分離和重新連接會(huì)話(huà)。
運(yùn)行一個(gè)長(zhǎng)時(shí)間運(yùn)行的進(jìn)程,然后按下 Ctrl+b
,接著按 d
,通過(guò)離開(kāi)正在運(yùn)行的進(jìn)程安全地分離你的 tmux 會(huì)話(huà)。
建議閱讀: 如何在斷開(kāi) SSH 會(huì)話(huà)后保持進(jìn)程/命令繼續(xù)運(yùn)行
現(xiàn)在,運(yùn)行一個(gè)長(zhǎng)時(shí)間運(yùn)行的進(jìn)程。出于演示目的,我們將把此服務(wù)器備份移動(dòng)到另一個(gè)遠(yuǎn)程服務(wù)器以進(jìn)行災(zāi)難恢復(fù)(DR)。
$ rsync -avzhe ssh /backup root@192.168.0.161:/backups/week-1/
在分離 tmux 會(huì)話(huà)之后,你將獲得類(lèi)似下面的輸出。
[detached (from session 0)]
運(yùn)行以下命令以列出可用的 tmux 會(huì)話(huà)。
$ tmux ls
0: 3 windows (created Tue Jan 30 06:17:47 2018) [109x45]
現(xiàn)在,使用適當(dāng)?shù)臅?huì)話(huà) ID 重新連接 tmux 會(huì)話(huà),如下所示:
$ tmux attach -t 0
如何關(guān)閉窗格和窗口
只需在相應(yīng)的窗格中輸入 exit
或按下 Ctrl-d
即可關(guān)閉它,和終端關(guān)閉類(lèi)似。要關(guān)閉窗口,按下 Ctrl+b, &
。
好了,就到這里了,希望你喜歡上它。