Linux中國

基於 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+bd。無需同時觸發這兩個快捷鍵,依次按下 Ctrl+bd 即可。

退出當前會話後,你將能看到如下輸出:

[detached (from session 0)]

創建有名會話

如果使用多個會話,你很可能會混淆運行在多個會話中的應用程序。這種情況下,我們需要會話並賦予名稱。譬如需要 web 相關服務的會話,就創建一個名稱為 「webserver」(或任意一個其他名稱) 的 Tmux 會話。

tmux new -s webserver

這裡是新的 Tmux 有名會話:

擁有自定義名稱的 Tmux 會話

如你所見上述截圖,這個 Tmux 會話的名稱已經被標註為 「webserver」。如此,你可以在多個會話中,輕易的區分應用程序的所在。

退出會話,輕按 Ctrl+bd

查看 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+bo 交換窗格。

展示窗格號

使用 Ctrl+bq 展示窗格號。

終止窗格

要關閉窗格,直接鍵入 exit 並且按下回車鍵。或者,按下 Ctrl+bx。你會看到確認信息。按下 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國