通过瑞雷斯·艾奥阿尼
介绍
如果您不熟悉服务器管理和命令行,也许您还没有听说终端多路复用器或其功能。您想学习如何成为一名优秀的Linux系统管理员,以及如何使用行业工具。也许您已经是一位经验丰富的管理员,并且可以管理许多台计算机,并且希望使您的生活更轻松一些。也许您介于两者之间。
无论哪种方式,本文都将解释什么是终端多路复用器,它们的作用,最重要的是,您将从中受益。终端多路复用器不过是一个允许其用户多路复用一个或多个虚拟会话的程序,因此用户可以在一个终端中拥有多个会话。这种程序最有用的功能之一是用户可以附加和分离此类会话。不久它将变得有用。
用例
持续性会议
假设您必须通过ssh /命令行管理远程服务器,但是您的连接不是很稳定。这意味着您必须经常重新连接,并且不想重新开始工作。终端多路复用器提供了在连接之间保存会话的功能,因此您可以从开始的地方继续。请注意,这样的会话在重新启动之间(在上面的例子中是您要连接的服务器的重新启动)之间不是持久的,因此最好知道这一点,以免出现这种功能。这样做的原因是,多路复用器运行Shell会话,您可能正在其中运行文本编辑器,监视工具等。由于重新启动后不再存在所有这些进程,因此没有理由实施此功能,因为它没有任何实际用途。
我们在介绍中谈到了附加和分离:这正是此功能的作用。继续我们的用例,当您的连接不稳定时,一旦断开连接,您可以再次进入服务器并重新连接到正在运行的会话(或在要重新连接的会话之间进行选择),然后您便会离开关。
一个以上的窗口
如果您习惯于平铺窗口管理器(例如dwm,XMonad或i3),则可以将终端多路复用器视为此类WM的终端等效项。它们比其他的更多,它们为您提供了多个窗口,能够在它们之间轻松切换,更改布局甚至调整窗口大小。也许您只想在需要时使用图形环境,而将其余的计算机时间都花在控制台上,或者您别无选择,因为在服务器上工作通常仅意味着命令行,因此,正如我们所说,作为CLI用户,欢迎您的到来使您的生活更加轻松。另一个优势是资源管理-如果您在受限的机器上工作,则只有一个终端在其中打开一个多路复用器会更容易占用CPU /RAM,而不是多个窗口或选项卡。或者,根据需要,可以完全替换图形界面。
协同工作
如上所述,不仅可以附加和重新附加会话,还可以共享会话。实际上,这意味着一个以上的用户可以附加到现有会话上,并在他们认为合适的情况下一起工作。
终端多路复用器
终端多路复用器列表
下面列出了终端多路复用器以及您需要入门的所有内容,包括安装,基本用法,功能,当然还有它们之间的一些比较,因此您可以轻松地确定最适合自己和自己的需求的方式。如果您才刚刚入门,那么尝试一下所有方法可能是个好主意,因为它的清单并不多,请自己看看最适合您的是什么。我们仍然会为急躁的人提供屏幕截图,但是我们认为,决定使用什么比使用直接使用更好,因此,如果有时间,请尝试一下。与往常一样,我们不会尝试替换下面介绍的任何程序的手册页,因此,要获取完整的参考,请使用’man $program’获取完整的信息。
GNU屏幕
GNU屏幕是Unix-like系统上最流行的(实际上不是领导者)终端多路复用软件之一,因此,为了简洁起见,因此将其命名为’screen’。屏幕提供了足够多的功能,使其拥有一群稳定而虔诚的用户。顾名思义,屏幕在GPLv3下发布,并且与GNU项目整体相关联。日常使用屏幕(和其他类似软件)必不可少的一个概念是命令快捷方式。命令快捷键是按键绑定,可通过配置文件或其他方式(例如,例如源代码)进行自定义,其后是允许用户向多路复用器发送命令的按键。
让我们举一个简单的例子:如果这种命令是创建新窗口的命令,那么也许是软件中最常用的命令。因此,我们要做的是按命令快捷键,然后按一个键,告诉屏幕为我们创建一个新窗口。屏幕中的默认命令快捷键是Ctrl + A(对于本文的其余部分,我们将使用C-a表示法),其后的命令是’c’,代表create。但是,让我们从头开始,让我们看看如何安装屏幕。在Debian /Ubuntu和其他基于Debian的Linux发行版中,要安装的命令是
$ sudo apt-get install screen
在基于Fedora和Redhat的发行版上,您可以通过发出以下命令来安装屏幕linux命令:
$ sudo yum install screen
关于Fedora,在最新版本的Fedora上,您可能需要用dnf替换yum,因为它已成为默认的命令行软件包管理工具。但是上面的命令应该起作用,因为它将警告您yum已过时,并将您重定向到dnf。鉴于GNU屏幕具有悠久的历史(1987年在net.sources上发布了第一个发布公告),因此在几乎所有与Unix有关的OS上它都已无处不在。如果您在X内,请打开终端窗口(或使用TTY),然后键入’screen’。您可能会注意到您的终端类型已更改为’screen’。可以通过键入来验证
$ echo $TERM
启动屏幕后。
现在开始使用屏幕,键入命令以创建一个新窗口,然后查看会发生什么情况(C-a + c)。如果您期望看到一些图形标志,表明现在有两个窗口,您将有些失望。您将被带到一个新窗口,仅此而已。所以现在我们必须看看如何在窗口之间导航。如果知道要转到哪个窗口(只有几个打开的窗口时特别有用),则可以使用C-a,后跟一个’字符。系统将提示您输入窗口标识符,输入该标识符后,您将被带到所述窗口。使用C-a + $ identifier也可以更直接地进行窗口切换,其中$ identifier至少到目前为止是窗口的数目,或者甚至更简单地通过使用C-a + Tab(就像许多窗口管理器中的Alt + Tab一样) )。要转到使用的最后一个窗口,只需键入两次C-a。例如,如果您在处理其他内容时需要遵循一个控制台的输出,则可以使用split命令-C-a + S(注意其中的大写字母s)。我们之前讨论的一项功能是允许您随意分离/附加会话的功能。例如,也许您想关闭客户端以进行重新引导,然后再返回到远程会话。使用C-a + C-d进行分离,然后在返回时,只需在会话名称后面添加-S作为screen的参数即可。要获取附加显示器的列表,请使用C-a,然后使用*(星号)。其他功能包括复制和粘贴(C-a + [用于复制,C-a +]用于粘贴),命名窗口(C-a + A)或窗口信息(即,您可以在消息行中显示有关当前窗口的某些信息-使用C-a + C-i为了这)。最后,使用C-a + k杀死一个窗口。
一些值得记住的注意事项:首先,您上面所读的内容只是表面上的划痕;屏幕是一个功能强大的程序,我们只选择了我们认为对用户入门最重要的内容。有关完整的功能集,请参考在线文档或手册页。其次,如果您使用的是bash和/或emacs,则可能要更改默认的命令快捷方式(C-a),因为它迟早会干扰相应的程序快捷方式。读者可以练习如何更改命令快捷方式。
多路复用器
可能最流行的GNU替代屏幕是tmux。与之不同的是,它是BSD-licensed,甚至是某些BSD操作系统(例如OpenBSD和NetBSD)的默认安装的一部分。但是,这并不意味着它在大多数Linux发行版中都不容易获得。对于基于Debian /Ubuntu的用户,只需键入
$ sudo apt-get install tmux
,而对于基于Redhat /Fedora的安装命令为
$ sudo yum install tmux
现在您对终端多路复用器已经有点熟悉了,我们将跳过一些基本知识,例如命令快捷方式的定义等,然后直接使用它。因此,启动一个终端,只需键入’tmux’。如果安装过程成功完成,您将看到类似于以下内容:您会注意到的第一件事是,tmux默认显示一条消息行,而不是屏幕。但是,让我们从头开始:tmux中的默认命令快捷键是Ctrl + b(C-b),后跟相应的命令。在浏览完本文之后,您会发现终端多路复用器之间的一些基本命令是相似的。因此,要在tmux中创建一个新窗口,命令为’c'(完整命令为C-b + c)。注意消息行现在如何显示两个窗口以及它们的默认标识符,它们是从0开始的正整数。要导航到另一个窗口,可以使用其各自的标识符(例如C-b + 1),或者访问最后一个窗口。使用的窗口,使用C-b + l。
这些命令通常非常简单明了且易于使用,因为它们通常遵循首字母规则-创建时使用’c’,最后一个时使用’l’,依此类推。同样,请参考手册页以获取完整的命令列表。使用简单的终端仿真器(即没有任何多路复用器),您会发现可以使用鼠标滚轮或Shift + PageUp轻松向上滚动。与其他多路复用器一样,tmux具有关于复制/粘贴/滚动的规则,因此如上所述的常规滚动将不再起作用。 C-b + [进入阶段:此命令将允许您复制文本或向上滚动文本。使用C-b +]可以粘贴最近选择的文本,如果要退出复制/滚动模式,请键入’q’。像屏幕一样,tmux提供了附加/分离会话的选项。如前所述,此功能是任何self-respecting终端多路复用器最重要的功能之一。
一种最简单的方案是用户出于各种原因退出活动会话并希望尽快恢复该活动的方案。 C-b + d用于分离会话(当前会话),然后,当返回到终端时,只需要做的就是键入’tmux attach’,就这样,我们就回到了离开的位置。如果存在多个会话,如何将其附加到您选择的会话上,留给用户练习。
dvtm
最后但并非最不重要的一点是,我们有dvtm,首先可以说它是平铺窗口管理器中最相似的(至少从我们的拙劣列表中)。并不是说屏幕或tmux没有必要的功能,只是默认情况下dvtm看起来像这样,您可以在这里看到:为了从头开始,要在Fedora或CentOS上安装,只需执行
$ sudo yum install dvtm
,请注意,在CentOS上,您将需要启用并运行EPEL存储库,因为默认存储库没有可用的dvtm。在基于Debian的发行版上,用于安装的命令应为
$ sudo apt-get install dvtm
由于您现在对多路复用器更加熟悉,因此让我们开始吧。只需在终端中键入’dvtm’即可完成设置。这里的命令快捷键是Ctrl + g(C-g),因此,如我们之前所见,只需创建C-g + c即可创建一个新窗口。您可以简单地将默认命令快捷方式更改为C-y(确保不会干扰窗口管理器或桌面环境首先设置的其他快捷方式),因此可以调用/启动dvtm:’dvtm -m^y’。默认情况下,使用C-g + x关闭窗口,并使用j和k键进行切换。您会(尤其是如果您是vi /vim的狂热用户)与某些文本编辑器的快捷方式有一些相似之处,因此,如果您喜欢vi /vim,那么您应该在家中。就像我们在tmux部分中看到的那样,使用C-g + $ window_number应该会带您到所需的窗口,并且dvtm还具有一项功能,允许您将输入发送到所有可见的窗口:为此,请使用C-g + a,然后是发送的命令/输入;再次使用C-g + a恢复正常行为。现在,我们进入到之前已经暗示的部分,即与平铺WM的相似之处。 dvtm涉及以下布局选项:
- 垂直堆栈-表示so-called主区域占据屏幕的左半部分,其余区域堆叠在右半部分
- 底部堆栈-正如您已经猜到的那样,基本相同,但是主区域位于上半部分,其余区域位于下半部分
- 网格-所有窗口的屏幕份额均等
- 全屏显示-名称已说明所有内容-所有窗口均提供所有可用的屏幕空间
关于复制/粘贴模式,如tmux部分中所述,原理是相同的,它的完成方式和快捷方式不同。 C-g + e将滚动缓冲区传递给外部编辑器,而该编辑器写入标准输出的内容则可以粘贴到C-g + p中。最后,分离/附加功能在那里,只有通过使用外部工具才能实现。虽然起初看起来好像是turn-off,但请记住dvtm只是为了简单起见,并秉承做一件事情并做好事的Unix原则。我们将使用的外部工具称为abduco,您可以像这样使用它:
$ abduco -c dvtm-session
附上。通常,它是单独的安装,并且可以使用与安装tmux时相同的方式来完成安装,并且再次,在CentOS和其他RHEL派生产品上,您需要启用EPEL才能进行安装。继续,使用C-g + \进行分离,并使用
$ abduco -a dvtm-session
您可以使用dtach来代替abduco,如何完成它留给读者练习。
结论
我们希望我们为您提供了开始使用终端多路复用器所需的一切,或者如果您已经使用了部分甚至全部的话,至少可以为您提供有关此问题的新信息。到现在为止,您可能会问:“好,我明白了,但是我应该使用哪一个?” -答案是“最适合您的那个”。这里有两件事:第一,用户场景和用例太多,无法给出明确的答案;第二,请记住,我们介绍的三个终端多路复用器可能是该领域中最受欢迎的,但绝不是只有一个。因此,我们说使用它们,进行尝试,然后对其进行修改以尽可能地满足您的需求,然后您便会知道要使用什么。更好的是,如果您有时间和技能,并且需要(现在)尚不存在的功能,请打开功能请求,或者更好的方法是,自行修改程序并共享代码。我们只能希望您喜欢这些工具并在工作中变得更有效率。