基於 Tmux 的多會話終端管理示例
我們已經了解到如何通過 GNU Screen 進行多會話管理。今天,我們將要領略另一個著名的管理會話的命令行實用工具 Tmux。類似 GNU Screen,Tmux 是一個幫助我們在單一終端窗口中創建多個會話,同一時間內同時運行多個應用程序或進程的終端復用工具。Tmux 自由、開源並且跨平台,支持 Linux、OpenBSD、FreeBSD、NetBSD 以及 Mac OS X。本文將討論 Tmux 在 Linux 系統下的高頻用法。
Linux 下安裝 tmux
Tmux 可以在絕大多數的 Linux 官方倉庫下獲取。
在 Arch Linux 或它的變種系統下,執行下列命令來安裝:
$ 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
以上,我們已經完成 Tmux 的安裝。之後我們繼續看看一些 Tmux 示例。
Tmux 命令示例: 多會話管理
Tmux 默認所有命令的前置命令都是 Ctrl+b
,使用前牢記這個快捷鍵即可。
注意:Screen 的前置命令都是
Ctrl+a
.
創建 Tmux 會話
在終端中運行如下命令創建 Tmux 會話並附著進入:
tmux
抑或,
tmux new
一旦進入 Tmux 會話,你將看到一個 沉在底部的綠色的邊欄,如下圖所示。
創建 Tmux 會話
這個綠色的邊欄能很容易提示你當前是否身處 Tmux 會話當中。
退出 Tmux 會話
退出當前 Tmux 會話僅需要使用 Ctrl+b
和 d
。無需同時觸發這兩個快捷鍵,依次按下 Ctrl+b
和 d
即可。
退出當前會話後,你將能看到如下輸出:
[detached (from session 0)]
創建有名會話
如果使用多個會話,你很可能會混淆運行在多個會話中的應用程序。這種情況下,我們需要會話並賦予名稱。譬如需要 web 相關服務的會話,就創建一個名稱為 「webserver」(或任意一個其他名稱) 的 Tmux 會話。
tmux new -s webserver
這裡是新的 Tmux 有名會話:
擁有自定義名稱的 Tmux 會話
如你所見上述截圖,這個 Tmux 會話的名稱已經被標註為 「webserver」。如此,你可以在多個會話中,輕易的區分應用程序的所在。
退出會話,輕按 Ctrl+b
和 d
。
查看 Tmux 會話清單
查看 Tmux 會話清單,執行:
tmux ls
示例輸出:
列出 Tmux 會話
如你所見,我們開啟了兩個 Tmux 會話。
創建非附著會話
有時候,你可能想要簡單創建會話,但是並不想自動切入該會話。
創建一個非附著會話,並賦予名稱 「ostechnix」,運行:
tmux new -s ostechnix -d
上述命令將會創建一個名為 「ostechnix」 的會話,但是並不會附著進入。
你可以通過使用 tmux ls
命令驗證:
創建非附著會話
附著進入 Tmux 會話
通過如下命令,你可以附著進入最後一個被創建的會話:
tmux attach
抑或,
tmux a
如果你想附著進入任意一個指定的有名會話,譬如 「ostechnix」,運行:
tmux attach -t ostechnix
或者,簡寫為:
tmux a -t ostechnix
關閉 Tmux 會話
當你完成或者不再需要 Tmux 會話,你可以通過如下命令關閉:
tmux kill-session -t ostechnix
當身處該會話時,使用 Ctrl+b
以及 x
。點擊 y
來關閉會話。
可以通過 tmux ls
命令驗證。
關閉所有 Tmux 服務下的所有會話,運行:
tmux kill-server
謹慎!這將終止所有 Tmux 會話,並不會產生任何警告,即便會話存在運行中的任務。
如果不存在活躍的 Tmux 會話,將看到如下輸出:
$ tmux ls
no server running on /tmp/tmux-1000/default
切割 Tmux 窗口
切割窗口成多個小窗口,在 Tmux 中,這個叫做 「Tmux 窗格」。每個窗格中可以同時運行不同的程序,並同時與所有的窗格進行交互。每個窗格可以在不影響其他窗格的前提下可以調整大小、移動位置和控制關閉。我們可以以水平、垂直或者二者混合的方式切割屏幕。
水平切割窗格
欲水平切割窗格,使用 Ctrl+b
和 "
(半個雙引號)。
水平切割 Tmux 窗格
可以使用組合鍵進一步切割面板。
垂直切割窗格
垂直切割面板,使用 Ctrl+b
和 %
。
垂直切割 Tmux 窗格
水平、垂直混合切割窗格
我們也可以同時採用水平和垂直的方案切割窗格。看看如下截圖:
切割 Tmux 窗格
首先,我通過 Ctrl+b
"
水平切割,之後通過 Ctrl+b
%
垂直切割下方的窗格。
如你所見,每個窗格下我運行了不同的程序。
切換窗格
通過 Ctrl+b
和方向鍵(上下左右)切換窗格。
發送命令給所有窗格
之前的案例中,我們在每個窗格中運行了三個不同命令。其實,也可以發送相同的命令給所有窗格。
為此,使用 Ctrl+b
然後鍵入如下命令,之後按下回車:
:setw synchronize-panes
現在在任意窗格中鍵入任何命令。你將看到相同命令影響了所有窗格。
交換窗格
使用 Ctrl+b
和 o
交換窗格。
展示窗格號
使用 Ctrl+b
和 q
展示窗格號。
終止窗格
要關閉窗格,直接鍵入 exit
並且按下回車鍵。或者,按下 Ctrl+b
和 x
。你會看到確認信息。按下 y
關閉窗格。
關閉窗格
放大和縮小 Tmux 窗格
我們可以將 Tmux 窗格放大到當前終端窗口的全尺寸,以獲得更好的文本可視性,並查看更多的內容。當你需要更多的空間或專註於某個特定的任務時,這很有用。在完成該任務後,你可以將 Tmux 窗格縮小(取消放大)到其正常位置。更多詳情請看以下鏈接。
自動啟動 Tmux 會話
當通過 SSH 與遠程系統工作時,在 Tmux 會話中運行一個長期運行的進程總是一個好的做法。因為,它可以防止你在網路連接突然中斷時失去對運行進程的控制。避免這個問題的一個方法是自動啟動 Tmux 會話。更多詳情,請參考以下鏈接。
總結
這個階段下,你已經獲得了基本的 Tmux 技能來進行多會話管理,更多細節,參閱 man 頁面。
$ man tmux
GNU Screen 和 Tmux 工具都能透過 SSH 很好的管理遠程伺服器。學習 Screen 和 Tmux 命令,像個行家一樣,徹底通過這些工具管理遠程伺服器。
via: https://www.ostechnix.com/tmux-command-examples-to-manage-multiple-terminal-sessions/
作者:sk 選題:lujun9972 譯者:chensanle 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive