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

我们已经学会了如何使用 GNU 屏幕 管理多个终端会话。 今天,我们将看到另一个著名的命令行实用程序,名为 “Tmux”,用于管理终端会话。 本指南通过 Linux 中的示例解释了什么是 Tmux 和 Tmux 命令用法。

内容

  1. 1.什么是Tmux?
  2. 2.在Linux中安装Tmux
  3. 3. Tmux 命令使用示例
    1. 3.1. 创建 Tmux 会话
    2. 3.2. 从 Tmux 会话中分离
    3. 3.3. 创建命名会话
    4. 3.4. 列出 Tmux 会话
    5. 3.5. 创建分离的会话
    6. 3.6. 附加到 Tmux 会话
    7. 3.7. 杀死 Tmux 会话
    8. 3.8. 拆分 Tmux 会话窗口
      1. 3.8.1. 水平拆分窗格
      2. 3.8.2. 垂直拆分窗格
      3. 3.8.3. 水平和垂直拆分窗格
      4. 3.8.4. 在窗格之间切换
      5. 3.8.5. 向所有窗格发送命令
      6. 3.8.6. 交换窗格
      7. 3.8.7. 显示窗格编号
      8. 3.8.9. 杀死窗格
    9. 4. 放大和缩小 Tmux 窗格
    10. 5. 自动启动 Tmux 会话
  4. 结论

1.什么是Tmux?

与 GNU Screen 类似,Tmux 也是一个终端多路复用器,它允许我们创建多个终端会话并在单个终端窗口内同时运行多个程序或进程。

Tmux 是免费、开源和跨平台的程序,支持 Linux、OpenBSD、FreeBSD、NetBSD 和 Mac OS X。

2.在Linux中安装Tmux

大多数 Linux 发行版的官方存储库中都提供了 Tmux。

要在 Alpine Linux 中安装 Tmux,请运行:

$ sudo apk add tmux

在 Arch Linux 及其变体(如 EndeavourOS 和 Manjaro Linux)上,运行以下命令进行安装。

$ sudo pacman -S tmux

在 Debian、Ubuntu、Linux Mint、Pop_OS 上:

$ sudo apt-get install tmux

在 Fedora、RHEL、CentOS、AlmaLinux、Rocky Linux:

$ sudo dnf install tmux

或者,

$ sudo yum install tmux

在 SUSE/openSUSE 上:

$ sudo zypper install tmux

好了,我们刚刚安装了 Tmux。 让我们继续看一些关于如何使用 Tmux 的例子。

3. Tmux 命令使用示例

Tmux 中所有命令的默认前缀快捷方式是 Ctrl+b. 使用 Tmux 时请记住这个键盘快捷键。

当心: 所有的默认前缀 屏幕 命令是 Ctrl+a.

3.1. 创建 Tmux 会话

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

$ tmux

或者,

$ tmux new

进入 Tmux 会话后,您将看到 底部的绿色条 如下面的屏幕截图所示。

新建 Tmux 会话

验证您是否在 Tmux 会话中非常方便。

3.2. 从 Tmux 会话中分离

要从当前的 Tmux 会话中分离,只需按 Ctrl+bd. 您不需要一次按下这两个键盘快捷键。 第一次按下 "Ctrl+b" 然后按 "d".

从会话中分离后,您将看到如下所示的输出。

[detached (from session 0)]

3.3. 创建命名会话

如果您使用多个会话,您可能会对哪些程序在哪些会话上运行感到困惑。 在这种情况下,您可以只创建命名会话。

例如,如果您想在会话中执行一些与 Web 服务器相关的活动,只需使用自定义名称创建 Tmux 会话,例如 “网络服务器” (或您选择的任何名称)。

$ tmux new -s webserver

这是新命名的 Tmux 会话。

具有自定义名称的 Tmux 会话

正如你在上面的截图中看到的,Tmux 会话的名称是 网络服务器. 通过这种方式,您可以轻松识别哪个程序正在哪个会话上运行。

要分离,只需按下 Ctrl+bd.

3.4. 列出 Tmux 会话

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

$ tmux ls

示例输出:

列出 Tmux 会话列出 Tmux 会话

如您所见,我有两个打开的 Tmux 会话。

3.5. 创建分离的会话

有时,您可能只想创建一个会话而不想自动附加到它。

创建一个名为的新分离会话 “骨科”, 跑:

$ tmux new -s ostechnix -d

上面的命令将创建一个名为“ostechnix”的新 Tmux 会话,但不会附加到它。

您可以验证会话是否是使用创建的 tmux ls 命令:

创建分离的 Tmux 会话创建分离的 Tmux 会话

3.6. 附加到 Tmux 会话

您可以通过运行以下命令附加到上次创建的会话:

$ tmux attach

或者,

$ tmux a

如果要附加到任何特定的命名会话,例如“ostechnix”,请运行:

$ tmux attach -t ostechnix

或者,很快:

$ tmux a -t ostechnix

3.7. 杀死 Tmux 会话

当您完成并且不再需要 Tmux 会话时,您可以随时使用以下命令终止它:

$ tmux kill-session -t ostechnix

要在连接时杀死,请按 Ctrl+bx. 打 "y" 杀死会话。

您可以验证会话是否已关闭 tmux ls 命令。

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

$ tmux kill-server

当心! 这将终止所有 Tmux 会话,即使会话中有任何正在运行的作业而没有任何警告。

当没有正在运行的 Tmux 会话时,您将看到以下输出:

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

3.8. 拆分 Tmux 会话窗口

Tmux 有一个选项可以将单个 Tmux 会话窗口拆分为多个较小的窗口,称为 Tmux 窗格.

通过这种方式,我们可以在每个窗格上运行不同的程序并同时与所有程序交互。

每个窗格都可以调整大小、移动和关闭,而不会影响其他窗格。 我们可以水平或垂直或同时拆分 Tmux 窗口。

3.8.1. 水平拆分窗格

要水平拆分窗格,请按 Ctrl+b" (单引号)。

水平拆分 Tmux 窗格水平拆分 Tmux 窗格

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

3.8.2. 垂直拆分窗格

要垂直拆分窗格,请按 Ctrl+b%.

垂直拆分 Tmux 窗格垂直拆分 Tmux 窗格

3.8.3. 水平和垂直拆分窗格

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

水平和垂直拆分窗格水平和垂直拆分窗格

首先,我通过按进行了水平拆分 Ctrl+b " 然后通过按垂直拆分下部窗格 Ctrl+b %.

正如您在上面的屏幕截图中看到的,我在每个窗格上运行三个不同的程序。

3.8.4. 在窗格之间切换

要在窗格之间切换,请按 Ctrl+b方向键(左、右、上、下).

3.8.5. 向所有窗格发送命令

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

为此,请按 Ctrl+b 并输入以下命令并点击 ENTER

:setw synchronize-panes

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

3.8.6. 交换窗格

要交换窗格,请按 Ctrl+bo.

3.8.7. 显示窗格编号

Ctrl+bq 显示窗格编号。

3.8.9. 杀死窗格

要杀死一个窗格,只需键入 exitENTER 钥匙。 或者,按 Ctrl+bx. 您将看到一条确认消息。 只需按下 "y" 到 close 窗格。

杀死 Tmux 窗格杀死 Tmux 窗格

4. 放大和缩小 Tmux 窗格

我们可以缩放 Tmux 窗格以使其适合当前终端窗口的完整大小,以获得更好的文本可见性并查看更多内容。

当您需要更多空间或专注于特定任务时,它非常有用。 完成该任务后,您可以将 Tmux 窗格缩小(取消缩放)到其正常位置。 以下链接中的更多详细信息。

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

5. 自动启动 Tmux 会话

通过 SSH 使用远程系统时,在 Tmux 会话中运行长时间运行的进程始终是一个好习惯。

因为,它可以防止您在网络连接突然断开时失去对运行过程的控制。

避免此问题的一种方法是自动启动 Tmux 会话。 有关更多详细信息,请参阅以下链接。

  • 通过 SSH 登录时在远程系统上自动启动 Tmux 会话

结论

在本指南中,我们通过示例讨论了 Tmux 命令的用法。 在此阶段,您将获得 Tmux 命令行实用程序的基本概念以及如何使用 Tmux 管理多个终端会话。 有关更多详细信息,请参阅手册页。

$ man tmux

在通过 SSH 远程管理服务器时,GNU Screen 和 Tmux 实用程序都非常有用。 彻底学习 Screen 和 Tmux 命令,像专业人士一样管理您的远程服务器。

CLILinuxLinux 基础Linux 命令Linux 如何管理终端会话终端多路复用器TmuxTmux 命令示例Tmux 会话