TranslateProject/translated/tech/20190610 Tmux Command Examples To Manage Multiple Terminal Sessions.md
2021-02-11 01:29:53 +08:00

7.7 KiB
Raw Blame History

基于 Tmux 的多会话终端管理示例

tmux 命令示例

我们已经了解到如何通过 GNU Screen 进行多会话管理。今天,我们将要领略另一个著名的命令行实用工具 “Tmux” 来管理会话。类似 GNU Screentmux 是一个帮助我们在单一终端窗口中创建多个会话同一时间内同时运行多个应用程序或进程的终端复用工具。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

Once you are inside the Tmux session, you will see a green bar at the bottom as shown in the screenshot below. 一旦进入 Tmux 会话,你将看到一个 绿色的栏目沉在底部 如下图所示。

创建 Tmux 会话

这个绿色的栏目能很容易提示,当前你是否身处 Tmux 会话当中。

退出 Tmux 会话

退出当前 Tmux 会话仅需要使用 Ctrl+bd。无需同时触发这两个快捷键,依次按下 “Ctrl+b” 和 “d” 即可。

退出当前会话后,你将能看到如下输出。

[detached (from session 0)]
创建有名会话

如果使用多个会话,你很可能会混淆运行在多个会话中的应用程序。这种情况下,我们需要会话并赋予名称。譬如需要 web 相关服务的会话,就创建一个名称为 “webserver”(或任意一个其他名称) 的 Tmux 会话。

tmux new -s webserver

这里是 Tmux 的有名会话

拥有自定义名称的 Tmux 会话

当你能够看到上述截图,这个 Tmux 会话的名称已经被标注为 webserver。如此,你可以在多个会话中,轻易的区分应用程序的所在。

退出会话,轻按 Ctrl+bd

查看 Tmux 会话清单

查看 Tmux 会话清单,执行:

tmux ls

示例输出:

如你所见,我们开启了两个 Tmux 会话。

创建非附着会话

有时候,你可能想要简单创建会话,但是并不想自动切入该会话。

创建一个非附着会话,并赋予名称 “ostechnix”,运行:

tmux new -s ostechnix -d

上述命令将会创建一个名为 “ostechnix” 的会话,但是并不会附着进入。

你可以通过使用 “tmux ls” 命令验证:

进入 Tmux 会话

通过如下命令,你可以进入最后一个被创建的会话:

tmux attach

Or,

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 panes”Tmux 窗格)。每个窗格中可以同时运行多个不同的程序。每个窗格可以在不影响其他窗格的前提下可以调整大小、移动位置和控制关闭。我们可以水平、垂直或者二者混合的方式切割屏幕。

水平切割窗格

欲水平切割窗格,使用 Ctrl+b(半个双引号)。

使用组合键进一步切割面板。

垂直切割窗格

垂直切割面板,使用 Ctrl+b%

垂直切割 Tmux 窗格

水平、垂直混合切割窗格

我们也可以同时采用水平和垂直的方案切割窗格。看看如下截图:

分割 Tmux 窗格

受限,我通过 Ctrl+b “ 水平分割,之后通过 Ctrl+b 垂直分割下方的窗格。

如你所见,每个窗格下我运行了不同的程序。

切换窗格

通过 Ctrl+b方向键(上下左右) 切换窗格。

发送命令给所有窗格

之前的案例中,我们在每个窗格中运行了三个不同命令。其实,也可以发送相同的命令给所有窗格。

为此,使用 Ctrl+b 然后键入如下命令,之后按压 ENTER

:setw synchronize-panes

现在在任意窗格中键入任何命令。你讲看到相同命令影响了所有窗格。

Swap panes 交换窗格

使用 Ctrl+bo 交换窗格。

展示窗格数量

使用 Ctrl+bq 展示窗格数量。

终止窗格

要关闭窗格,直接键入 exit 并且使用 ENTER 键。或者,按压 Ctrl+bx。你会看到确认信息。按压 ”y“ 关闭窗格。

关闭窗格。

这个阶段下,你已经获得了基本的 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 译者:译者ID 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出