如何在 Linux 上使用 tmux 进行终端多任务处理

tmux 是终端多路复用器的缩写,是一个命令行实用程序,它使从终端工作变得更加容易。它允许您将终端窗口拆分为多个窗格,这些窗格将在多个 SSH 会话中持续存在。
安装和使用 tmux
tmux
可以从大多数发行版的包管理器中安装。对于像 Ubuntu 这样的基于 Debian 的系统,这将是:
apt-get install tmux
它也可以在 brew 上使用,brew 是 macOS 的第三方包管理器,使用 brew install tmux
。
安装后,您可以通过输入 tmux
命令开始。但是,这会启动一个随机名称的会话,因此您可以使用 tmux new
创建一个新的命名会话:
tmux new -s [name]
这将接管您的终端窗口,您会在底部看到一个新的命令栏。您现在正在 tmux
中运行,在一个新创建的会话中。这个会话就好像你打开了一个新的终端窗口或一个新的 SSH 会话,并让它在你的桌面上运行,除了它是在没有窗口的情况下在幕后运行的。 tmux
允许您连接到它。本质上,tmux
是终端世界的桌面环境。
如果您关闭实际的终端窗口,此 tmux
会话将持续存在,直到您手动终止它(或重新启动系统)。连接到远程服务器时,它的工作方式相同;您运行的所有内容都将持续存在,直到您终止会话。
要终止会话,您可以运行 exit
命令,或按 Control+A、Control+D。当 tmux 退出时,您会在主终端中看到“exited”。
但更常见的是,您只想断开与会话的连接并让它在服务器上运行。为此,您需要按 tmux
前缀快捷方式,默认情况下为 Control+B,然后按“D”键。当 tmux 退出时,您会在主终端中看到“Detached From Session”。
要重新连接到会话,请使用:
tmux a -t [name]
“a
”命令是attach-session
的缩写,可以节省一些击键次数。此外,您可以使用 #
快捷方式连接到上次创建的会话:
tmux a #
要查看所有会话,您可以运行:
tmux ls
这将显示会话名称和当前窗口数。在尝试连接到另一个会话时,请确保您尚未连接到 tmux
会话,因为默认情况下递归被阻止(无论如何都很痛苦)。
使用窗格进行多任务处理
窗格大量使用 tmux
前缀快捷方式,因此最好记住它:
Control+B
每个命令都将以此为前缀,以便 tmux
拦截它。
要创建新窗格,请使用以下两个快捷方式之一:
-
Control+B %
垂直分割 Control+B \
水平分割
这些将根据您的选择拆分当前窗格。

要在窗格之间切换,您将输入 Control+B,然后输入箭头键。您还可以使用 Oh My Tmux! 安装鼠标支持,这样您就可以在它们之间点击。
如果您对窗格的大小不满意,可以使用以下两个命令调整它们的大小:
Control+B :
resize-pane -R 4
Control+B 后跟一个冒号可打开 tmux
命令提示符,它接受更详细的命令。我们在这里使用的命令是 resize-pane
,它有一个方向(U 表示向上,L 表示向左,等等)和要扩展的行数。在这种情况下,此命令将当前选定的窗格向右扩展四行。
视窗
如果您不喜欢终端拆分的外观(或者只想多任务处理全屏应用程序),您可以使用 tmux
windows。您可以使用以下命令与 Windows 一起工作:
Control+B c
创建一个新窗口Control+B p
切换到上一个窗口Control+B n
切换到下一个窗口Control+B 0-9
按索引号切换到窗口。
此外,按 Control+B w
将调出一个交互式展示窗口,让您可以查看已打开的窗口、它们正在运行的命令以及它们有多少个窗格:

您可以随时使用 exit
命令终止窗口,这将停止所有正在运行的进程。请注意,如果您在只打开一个窗口的情况下运行它,这也会完全停止 tmux
。
如果窗口变得无响应,您可以使用 Control+B &
强制关闭它,这将始终终止该窗口中正在运行的进程。
扩展 tmux
tmux
广受欢迎,背后有大量的插件、主题和社区支持。这里有一些有用的:
- 哦,我的 Tmux! – 电力线主题、鼠标支持和许多有用的功能
- tmux-resurrect – 在重新启动时保存您的布局(以及更多)
- tmux-pain-control – 添加了一些用于管理面板的快捷键
- tmux-better-mouse-mode – 为某些 CLI 应用程序提供更好的鼠标支持
- tmuxifier – 保存到配置文件的 tmux 窗口管理器
- 还有大量的主题。
tmux
的内容比这里介绍的要多得多,但核心功能相对简单(这使它成为一个很好的实用程序)。