tmux命令管理多个终端会话示例
我们已经学会了使用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一样管理远程服务器。