tmux命令管理多个终端会话示例

时间:2020-03-21 11:48:26  来源:igfitidea点击:

我们已经学会了使用GNU Screen来管理多个终端会话。

今天,我们将看到另一个名为"tmux"的众所周知的命令行实用程序来管理终端会话。
类似于GNU Screen,TMUX也是终端多路复用器,允许我们创建终端会话的数量,并在单个终端窗口内同时运行多个程序或者进程。
TMUX是免费的,开源和跨平台程序,支持Linux,OpenBSD,FreeBSD,NetBSD和Mac OS X.在本教程中,我们将在Linux中讨论最常用的Tmux命令。

在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。
使用TMUX时记住此键盘快捷键。

注意:所有 Screen命令的默认前缀是CTRL + A。

创建Tmux会话

要创建新的Tmux会话并附上它,请从终端运行以下命令:

tmux

或者,

tmux new

一旦我们在TMUX会话中,我们将看到底部的绿色列,如下 Screen截图所示。

验证我们是否在TMUX会话中是非常方便的。

从TMUX会话中脱离

要从当前TMUX会话中分离,只需按Ctrl + B和D。
我们不需要一次按下这两个键盘快捷方式。
首先按"Ctrl + B",然后按"D"。

从会话中脱离后,我们将看到下面的输出。

[detached (from session 0)]

创建命名会话

如果使用多个会话,则可能会困惑在哪些会话上运行哪些程序。
在这种情况下,我们可以创建命名会话。
例如,如果要在会话中执行与Web服务器相关的一些活动,只需使用自定义名称创建TMUX会话,例如"WebServer"(或者我们选择的任何名称)。

tmux new -s webserver

这是新的名为Tmux会话。

正如我们在上面的 Screen截图中看到的,TMUX会话的名称是Web服务器。
这样,我们可以轻松地识别在哪个会话上运行的程序。

要分离,只需按Ctrl + B和D。

列出tmux会话

要查看打开的Tmux会话列表,请运行:

tmux ls

正如我们所看到的,我有两个开放的Tmux会话。

创建独立的会话

有时,我们可能希望简单地创建一个会话,不希望自动添加到它。

要创建名为"theitroad"的新分离会话,请运行:

tmux new -s theitroad -d

上面的命令将创建一个名为"theitroad"的新TMUX会话,但不会添加到它。

我们可以验证是否使用"tmux ls"命令创建会话:

添加到Tmux会话

我们可以通过运行此命令添加到最后一个创建的会话:

tmux attach

或者,

tmux a

如果要添加到任何特定的命名会话,例如"theitroad",请运行:

tmux attach -t theitroad

或者,不久:

tmux a -t theitroad

杀死Tmux会话

当我们完成并不再需要TMUX会话时,我们可以随时使用命令杀死它:

tmux kill-session -t theitroad

添加时杀死,按Ctrl + B和x。
点击"Y"杀死会话。

我们可以验证会话是否已使用"tmux ls"命令关闭。

要杀死TMUX服务器以及所有TMUX会话,请运行:

tmux kill-server

小心!即使在会话中有任何运行作业,终止所有Tmux会话也没有任何警告。

当没有运行Tmux会话时,我们将看到以下输出:

$tmux ls
no server running on /tmp/tmux-1000/default

拆分Tmux会话窗口

TMUX可以选择将单个TMUX会话窗口拆分为称为TMUX窗格的多个较小窗口。
这样我们就可以在每个窗格上运行不同的程序,并同时与所有窗格进行交互。
每个窗格都可以调整大小,移动和关闭而不会影响其他窗格。
我们可以在水平或者垂直或者垂直拆分Tmux窗口。

水平分开窗格

拆分窗格水平,按Ctrl + B和"(单引号)。

使用相同的键组合以进一步拆分窗格。

垂直分开窗格

要垂直拆分窗格,请按Ctrl + B和%。

水平和垂直分开窗格

我们还可以同时水平和垂直拆分窗格。
看看以下截图。

首先,我通过按Ctrl + B"进行水平分割,然后按Ctrl + B%垂直分割下窗格。

正如我们在上面的 Screen截图中看到的那样,我正在每个窗格上运行三个不同的程序。

在窗格之间切换

要在窗格之间切换,请按Ctrl + B和箭头键(向左,向右,向上,向下)。

发送命令到所有窗格

在前面的示例中,我们在每个窗格上运行三个不同的命令。
但是,也可以运行一次向所有窗格发送相同的命令。

为此,请按Ctrl + B并键入以下命令并按Enter键:

:setw synchronize-panes

现在在任何窗格上键入任何命令。
我们将看到相同的命令反映在所有窗格上。

交换窗格

转换窗格,按Ctrl + B和O.

显示窗格号码

按Ctrl + B和Q显示窗格编号。

杀窗子

要杀死一个窗格,只需输入退出并输入键。
或者,按Ctrl + B和x。
我们将看到确认消息。
只需按"Y"关闭窗格。

放大并缩小TMUX窗格

我们可以缩放TMUX窗格将其拟合到当前终端窗口的全尺寸,以获得更好的文本可见性,并查看更多内容。
当我们需要更多空间或者专注于特定任务时,它很有用。
完成任务后,我们可以将TMUX窗格放大(未放大)回到其正常位置。
以下链接中的更多详细信息。

  • 如何缩放Tmux窗格以获得更好的文本可见性

AutoStart Tmux会话

在通过SSH使用远程系统时,在TMUX会话中运行长期运行过程始终是一个很好的做法。
因为,当网络连接突然下降时,它会阻止我们失去运行过程的控制。
避免此问题的一种方法是自动启动TMUX会话。
有关详细信息,请参阅以下链接。

  • 通过SSH登录时远程系统上的AutoStart Tmux会话

在此阶段,我们将获得TMUX的基本思想以及如何使用它来管理多个终端会话。
有关更多详细信息,请参阅Man页面。

$man tmux

通过SSH远程管理服务器,GNU Screen和TMUX实用程序都非常有用。
学习 Screen和TMUX命令彻底,以便像Pro一样管理远程服务器。