基于Tmux的多會話終端管理示例
我們已經(jīng)了解到如何通過 GNU Screen 進行多會話管理。今天,我們將要領(lǐng)略另一個著名的管理會話的命令行實用工具 Tmux。類似 GNU Screen,Tmux 是一個幫助我們在單一終端窗口中創(chuàng)建多個會話,同一時間內(nèi)同時運行多個應用程序或進程的終端復用工具。Tmux 自由、開源并且跨平臺,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文將討論 Tmux 在 Linux 系統(tǒng)下的高頻用法。
Linux 下安裝 tmux
Tmux 可以在絕大多數(shù)的 Linux 官方倉庫下獲取。
在 Arch Linux 或它的變種系統(tǒng)下,執(zhí)行下列命令來安裝:
$ sudo pacman -S tmux
Debian、Ubuntu 或 Linux Mint:
$ sudo apt-get install tmux
Fedora:
$ sudo dnf install tmux
RHEL 和 CentOS:
$ sudo yum install tmux
SUSE/openSUSE:
$ sudo zypper install tmux
以上,我們已經(jīng)完成 Tmux 的安裝。之后我們繼續(xù)看看一些 Tmux 示例。
Tmux 命令示例: 多會話管理
Tmux 默認所有命令的前置命令都是 Ctrl+b
,使用前牢記這個快捷鍵即可。
注意:Screen 的前置命令都是
Ctrl+a
.
創(chuàng)建 Tmux 會話
在終端中運行如下命令創(chuàng)建 Tmux 會話并附著進入:
tmux
抑或,
tmux new
一旦進入 Tmux 會話,你將看到一個 沉在底部的綠色的邊欄,如下圖所示。
創(chuàng)建 Tmux 會話
這個綠色的邊欄能很容易提示你當前是否身處 Tmux 會話當中。
退出 Tmux 會話
退出當前 Tmux 會話僅需要使用 Ctrl+b
和 d
。無需同時觸發(fā)這兩個快捷鍵,依次按下 Ctrl+b
和 d
即可。
退出當前會話后,你將能看到如下輸出:
[detached (from session 0)]
創(chuàng)建有名會話
如果使用多個會話,你很可能會混淆運行在多個會話中的應用程序。這種情況下,我們需要會話并賦予名稱。譬如需要 web 相關(guān)服務的會話,就創(chuàng)建一個名稱為 “webserver”(或任意一個其他名稱) 的 Tmux 會話。
tmux new -s webserver
這里是新的 Tmux 有名會話:
擁有自定義名稱的 Tmux 會話
如你所見上述截圖,這個 Tmux 會話的名稱已經(jīng)被標注為 “webserver”。如此,你可以在多個會話中,輕易的區(qū)分應用程序的所在。
退出會話,輕按 Ctrl+b
和 d
。
查看 Tmux 會話清單
查看 Tmux 會話清單,執(zhí)行:
tmux ls
示例輸出:
列出 Tmux 會話
如你所見,我們開啟了兩個 Tmux 會話。
創(chuàng)建非附著會話
有時候,你可能想要簡單創(chuàng)建會話,但是并不想自動切入該會話。
創(chuàng)建一個非附著會話,并賦予名稱 “ostechnix”,運行:
tmux new -s ostechnix -d
上述命令將會創(chuàng)建一個名為 “ostechnix” 的會話,但是并不會附著進入。
你可以通過使用 tmux ls
命令驗證:
創(chuàng)建非附著會話
附著進入 Tmux 會話
通過如下命令,你可以附著進入最后一個被創(chuàng)建的會話:
tmux attach
抑或,
tmux a
如果你想附著進入任意一個指定的有名會話,譬如 “ostechnix”,運行:
tmux attach -t ostechnix
或者,簡寫為:
tmux a -t ostechnix
關(guān)閉 Tmux 會話
當你完成或者不再需要 Tmux 會話,你可以通過如下命令關(guān)閉:
tmux kill-session -t ostechnix
當身處該會話時,使用 Ctrl+b
以及 x
。點擊 y
來關(guān)閉會話。
可以通過 tmux ls
命令驗證。
關(guān)閉所有 Tmux 服務下的所有會話,運行:
tmux kill-server
謹慎!這將終止所有 Tmux 會話,并不會產(chǎn)生任何警告,即便會話存在運行中的任務。
如果不存在活躍的 Tmux 會話,將看到如下輸出:
$ tmux ls
no server running on /tmp/tmux-1000/default
切割 Tmux 窗口
切割窗口成多個小窗口,在 Tmux 中,這個叫做 “Tmux 窗格”。每個窗格中可以同時運行不同的程序,并同時與所有的窗格進行交互。每個窗格可以在不影響其他窗格的前提下可以調(diào)整大小、移動位置和控制關(guān)閉。我們可以以水平、垂直或者二者混合的方式切割屏幕。
水平切割窗格
欲水平切割窗格,使用 Ctrl+b
和 "
(半個雙引號)。
水平切割 Tmux 窗格
可以使用組合鍵進一步切割面板。
垂直切割窗格
垂直切割面板,使用 Ctrl+b
和 %
。
垂直切割 Tmux 窗格
水平、垂直混合切割窗格
我們也可以同時采用水平和垂直的方案切割窗格??纯慈缦陆貓D:
切割 Tmux 窗格
首先,我通過 Ctrl+b
"
水平切割,之后通過 Ctrl+b
%
垂直切割下方的窗格。
如你所見,每個窗格下我運行了不同的程序。
切換窗格
通過 Ctrl+b
和方向鍵(上下左右)切換窗格。
發(fā)送命令給所有窗格
之前的案例中,我們在每個窗格中運行了三個不同命令。其實,也可以發(fā)送相同的命令給所有窗格。
為此,使用 Ctrl+b
然后鍵入如下命令,之后按下回車:
:setw synchronize-panes
現(xiàn)在在任意窗格中鍵入任何命令。你將看到相同命令影響了所有窗格。
交換窗格
使用 Ctrl+b
和 o
交換窗格。
展示窗格號
使用 Ctrl+b
和 q
展示窗格號。
終止窗格
要關(guān)閉窗格,直接鍵入 exit
并且按下回車鍵。或者,按下 Ctrl+b
和 x
。你會看到確認信息。按下 y
關(guān)閉窗格。
關(guān)閉窗格
放大和縮小 Tmux 窗格
我們可以將 Tmux 窗格放大到當前終端窗口的全尺寸,以獲得更好的文本可視性,并查看更多的內(nèi)容。當你需要更多的空間或?qū)W⒂谀硞€特定的任務時,這很有用。在完成該任務后,你可以將 Tmux 窗格縮?。ㄈ∠糯螅┑狡湔N恢?。更多詳情請看以下鏈接。
自動啟動 Tmux 會話
當通過 SSH 與遠程系統(tǒng)工作時,在 Tmux 會話中運行一個長期運行的進程總是一個好的做法。因為,它可以防止你在網(wǎng)絡連接突然中斷時失去對運行進程的控制。避免這個問題的一個方法是自動啟動 Tmux 會話。更多詳情,請參考以下鏈接。
總結(jié)
這個階段下,你已經(jīng)獲得了基本的 Tmux 技能來進行多會話管理,更多細節(jié),參閱 man 頁面。
$ man tmux
GNU Screen 和 Tmux 工具都能透過 SSH 很好的管理遠程服務器。學習 Screen 和 Tmux 命令,像個行家一樣,徹底通過這些工具管理遠程服務器。