tmux 快速入门

像在桌面窗口管理器中一样管理终端中的应用程序窗口。
594 位读者喜欢这篇文章。
System statistics with sar and the /proc filesystem

ajmexico。由 Jason Baker 修改。CC BY-SA 2.0。

对于许多人来说,Linux 终端是他们完成最重要工作的主要场所。无论是管理多台远程机器的系统管理员,还是在浏览源代码时尝试运行新代码片段的程序员,或者只是试图阅读 man page 文档以逐步输入冗长命令的普通用户,在同一时间运行和查看多个终端应用程序的输出是很常见的需求。

为什么跟踪多个应用程序应该是一个需要花哨的现代 GUI 才能解决的难题?当然,您可以启动多个终端实例,或者使用一个可以平铺终端的 终端模拟器。但是有一种更简单,并且可以说是更好的方法,即使用原生终端应用程序来管理您的多个应用程序,就像在传统的窗口环境中一样。这就是 tmux,终端复用器。

 

 

在我们介绍 tmux 以及它将如何改变您与命令行的交互方式之前,让我们先谈谈进程。当您从终端启动一个程序时,似乎您的终端现在完全被该进程占用。但这实际上并非如此。在 Bash shell(和许多其他 shell)中,您可以在启动时将您的应用程序发送到后台(通过在命令末尾放置 &)或者通过按 ctrl+z 暂停作业,然后使用 bg 将您的命令发送到后台,并使用 fg 返回前台,或者使用 jobs 命令查看作业列表。

进程控制本身是 Linux 世界中的一个重要概念,任何 Linux 用户都将受益于花一点时间来理解它,但它是一个足够大的领域,超出了本文的范围。我在这里提到它是因为对于新手来说,存在一个常见的误解,即在命令行启动命令总是“占用”启动它的终端,直到进程终止,但事实并非如此。

tmux 可以帮助解决许多问题,但主要目的是允许您在同一个终端窗口中运行多个应用程序,可以是并排运行,也可以让您通过简单的按键在应用程序之间轻松切换,或者在同一个窗口中一起切换应用程序组。它还允许您“附加”或“分离” tmux 实例,实际上,如果您关闭终端,您的应用程序将像您离开时一样继续运行,允许您稍后返回。

安装 tmux 很简单。如果您的机器上尚未安装,那么它肯定在您的 Linux 发行版的默认存储库中,因此使用您选择的包管理器进行安装将很简单。在 Fedora 上,这意味着一个简单的 $ sudo dnf install tmux -y 命令将为您安装它,您将在几秒钟内准备好启动并运行。

一旦您首次安装并启动 tmux,您将在终端底部看到一个绿色栏。默认情况下,该栏将为您提供打开的窗口列表、您的主机名和时间,但您可以将其配置为显示更多内容。

tmux 中的命令通过首先发出命令前缀来发出。默认情况下,这是 ctrl+b,但您也可以更改它。在按下 ctrl+b 后,您可以通过按 c 键创建一个新窗口。然后您可以在这个新窗口中发出命令,并通过按 p 键返回上一个窗口,或按 w 键列出您创建的所有窗口,您可以从中在它们之间跳转。

您还可以通过按 ctrl+b 或您分配给命令前缀的任何键来将窗口拆分为多个窗格,然后按 % 键垂直拆分屏幕或按 " 键水平拆分屏幕。然后,您可以使用前缀和箭头键在窗格之间跳转。

这些是基础知识。当您完成使用窗格或窗口后,您可以使用命令前缀和 x 键删除窗格,或使用 & 键删除窗口。想了解更多?前缀后跟 ? 将告诉您更多信息;它是内置的命令列表。

tmux-overview.png

一旦您开始使用 tmux,探索了这些基本命令,并开始设置一个根据您的需求定制的终端环境,您将希望超越我在此处包含的基本说明。您应该这样做——那里有很多很棒的信息!以下是我发现的一些其他有用的资源

  • 去阅读 man page。认真地说,即使在如今搜索功能无处不在的现代世界中,man page 的存在也是有原因的。man page 将始终在您的指尖,无论是否有互联网访问。它会告诉您您需要知道的所有基础知识。

  • 看看另一个指南,详细了解其他人如何使用和配置 tmux 以满足他们的需求。这里有一些 a 一些 好的 例子。然后,去看看您主目录中的 .tmux.conf 文件,您可以在其中非常详细地自定义 tmux。这是一个 好的指南

  • 读一本书。我发现比较好的两本书包括 tmux 2: Productive Mouse-Free Development,可通过 Pragmatic Press 购买纸质版或电子书,以及 The Tao of tmux,除了纸质版或电子书版本外,还可以根据 CC BY-NC-SA 3.0 许可在 网上免费阅读

  • 打印或学习速查表。有很多 很多 选择 选项

  • 加入社区。Reddit 有一个 r/tmux 群组,大多数 Linux 用户组至少会有一位愿意帮助您的 tmux 用户,并且 Freenode IRC 上的 #tmux 频道通常挤满了数百位乐于助人的人。

tmux 是唯一提供此功能的工具吗?正如开源世界中经常发生的情况一样,答案是否定的!GNU Screen 是另一个提供类似功能的流行工具。虽然 GNU Screen 和 tmux 之间存在一些细微的差异,但您选择使用哪一个实际上是个人偏好问题。GNU Screen 有几十年的历史,非常稳定;其历史悠久的另一面是,它几乎没有看到活跃的开发。

虽然老前辈和其他老手可能对 GNU Screen 非常满意,但 tmux 似乎在如今更广泛的 Linux 社区中引起了更广泛的兴趣。这并不意味着它更好或更坏,但这确实意味着我发现,在支持社区和互联网上寻找时,通常更容易找到已经解决了我的确切问题或配置挑战的人。它独特的名称也使 tmux 在 GitHub 和其他软件存储库中查找插件时更容易找到。

您使用 tmux 吗?您希望在刚开始使用时就知道什么?请在下面的评论中告诉我们。

标签
Jason Baker
前 Red Hatter。现在是一名顾问和有抱负的企业家。地图爱好者、创客,以及开源桌面和自托管软件的热情安装者。

6 条评论

在 1970/80 年代,我曾在 SCO/Unix 和 AIX 系统上工作,我们使用 Wyse 终端连接到这些机器。我们在系统上安装了一些软件,使您能够完全做到 tmux 所做的事情。您启动它并输入您的命令。如果您在命令前加上(我认为)ctrl/shift/b,它会将其放在第二个窗口中,ctrl/shift/c 放在第三个窗口中,等等。这在哑终端上非常有用,但如果您有 X,我真的看不到太大的需求,正如文章所说,只需启动另一个终端即可。

说到 Wyse 终端,从记忆中来看,Wyse 60s 是多会话的。在我工作的地方,一个会话将您连接到内部机器,另一个会话连接到拨号调制解调器,这使您能够连接到客户端机器。我不记得我们是如何在会话之间切换的(可能是通过一个低技术的跷跷板开关),但我确实记得查看客户端机器,然后切换到运行他们软件的内部机器,以便我们可以确定他们的问题是什么。

我目前正在使用 tmux,设置服务器。我使用的主要“功能”之一是,您可以离开 tmux 会话,而您在此会话中启动的作业会保持运行。非常方便,尽管其他 Linux 专家并不总是建议这样做。

我作为一个年轻的系统管理员了解了 GNU screen(哇!我可以让这个漫长的升级过程在我开车去办公室的时候运行?!)。我听说了很多关于 tmux 的好评,但在这一点上,我对 screen 的使用相当简单,并且一切都设置得很好。我没有发现任何足够有说服力的东西让我走出舒适区去尝试 tmux。

在本地,我总是使用 1 个 tmux 会话,然后我的图形终端模拟器中的其他选项卡要么是我当前用户在不同(或相同)目录中,要么通过 ssh 连接到远程机器,我在远程机器上总是运行一个 tmux 会话(因为我在远程机器上的登录用户权限不足)。

我不太怀念的古老技术,但在某个时间点(20 多年前)当我们只有一个 24x80 单色终端使用 2400bps 调制解调器远程开发、调试和部署软件时,它非常棒。我们最多可以同时进行 10 个终端会话,我们可以在这些会话之间来回切换,困难的是记住什么东西在哪里。
我们的 UNIX SYSTEM IV 开发中心在摩托罗拉的一位软件工程师开发了另一个有用的实用程序;它被称为“metoo”。它对于培训和客户支持非常有用,它允许多个人共享到他们屏幕的同一个终端会话。所以这与 tmux 正好相反 :)

我喜欢 tmux。我经常使用会话功能。我通常为我正在处理的每个项目创建一个会话,并在它们之间切换。它让我在一个 bash 窗口中拥有多个项目。我也喜欢将 tmux 与 mosh 配对使用,这样当我切换网络时,我的工作区会自动恢复。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可获得许可。
© . All rights reserved.