介绍
当您开始使用多个远程服务器时,您打开的终端会话数量可能开始感到压倒性。 有很多时候,例如当编译代码时,当您的终端被长时间运行的进程占用时。 为了解决这个问题,避免连接新的SSH会话以继续工作,发明了终端复用器。
终端复用器允许您在单个“主”会话中管理多个终端窗口。 它们允许您以类似于图形窗口管理器的方式来方便地安排和与窗口交互。 这两种最流行的工具是GNU screen
和 。
在本指南中,我们将讨论一种不同的方法。 虽然其他两个选项对许多人都有好处,但它们比大多数用户需要的更重,而且缺乏一些不错的演示。 为了解决这些问题,我们将向您展示如何使用组合dvtm
,动态虚拟终端管理,这将处理窗口管理,并dtach
一个工具,它允许你分离的持久性会议。 这是一个重量更轻的解决方案,将更适合一些人。
我们将在Ubuntu 12.04 VPS实例上讨论这些步骤的安装和使用,但大多数发行版都应该能够使用这些步骤进行一些修改。
安装组件
在Linux服务器上做大多数事情的第一步是确保你有你需要的工具。
在我们的例子中,我们将需要下载并安装这两个dtach
和dvtm
。 幸运的是,Ubuntu 12.04存储库具有这两个实用程序。 我们需要刷新我们的本地包索引,然后我们可以安装我们需要:
sudo apt-get update
sudo apt-get install dvtm dtach
这就是我们需要的! 我们现在可以开始探索这些工具如何工作。
如何使用dvtm终端管理器
该dvtm
终端管理器是试图仿效一些功能和属性由图形平铺窗口管理器,如用户喜爱的窗口管理器awesomewm
, dwm
, i3
, xmonad
等,它可以让你组织Windows轻松和操纵屏幕空间,以满足您的需要。
要启动dvtm
会话,你只需要在命令行调用它:
dvtm
─[demouser@dvtm: ~ #1]────────────────────────────────────────────────
demouser@dvtm:~#
如你所见,现在有一个新的终端会话,但在它上面有一个标题。 这个头基本上是一个窗口标题栏。 它告诉你它正在管理的会话和窗口号。
你需要知道的第一件事是,所有dvtm
的命令开始与“国防部”键序列。 当你点击这个序列,它标志着以dvtm
它应该开始倾听并拦截下一个按键。
默认情况下,mod序列是“CTRL-g”。 因此每一个用于命令的dvtm
具有的格式:
CTRL-g [keypress]
基本窗口管理
让我们跳进去,开始使用多个窗口。 您将学习的第一个序列将允许您创建第二个窗口:
CTRL-g c
您需要按住“控制”键,按“g”键,然后释放这两个键,然后按“c”。 你会看到你的环境如下垂直分割:
──[demouser@dvtm: ~ | #1]──────────┬──[demouser@dvtm: ~ | #2]──────────
demouser@dvtm:~# │demouser@dvtm:~#
│
│
正如你可以看到,你现在有两个窗口! 如果你键入一些字符,你会看到它们出现在一个窗口中。 要切换哪个窗口具有焦点,请键入:
CTRL-g j # Cycle forward through windows
CTRL-g k # Cycle backward through windows
如果你想跳转到一个特定的窗口,你可以通过引用它的窗口编号:
CTRL-g [window #]
例如,将焦点移动到窗口3中,我们可以输入CTRL-g 3
。
要销毁具有焦点的窗口,请键入:
CTRL-g x
要销毁所有窗口,并结束您的dvtm
会话,请键入:
CTRL-g q
调整平铺布局
当您创建更多窗口时,您会注意到,默认情况下,一个区域保持较大,而另一个窗口堆叠在一侧。 这是由于平铺布局。
默认情况下,窗口布局在所谓的“垂直”平铺布局。 这将创建一个“主”窗口,所有其他窗口拆分剩余空间。
还有其他布局选项可用。 创建四个或五个窗口,并在一些窗口中启动一些程序,以便你可以告诉他们。
要循环浏览布局,请使用以下顺序:
CTRL-g [SPACE]
默认情况下,您可以按顺序循环的布局为:
- 垂直 :默认布局。 主窗口在左侧,所有其他窗口共享右侧的空间。
- 格 :所有的窗户试图占用空间相等的窗口区域。 没有相关的主窗口(技术上是左上角的空格)。
- 底部 :主窗口是在屏幕的上半部分。 剩余的窗口占据下半部分。
- 全屏 :最大化目前集中的窗口。 您可以像往常一样在最大化状态下循环浏览每个窗口。
您可以使用“空格”键继续循环浏览这些布局,但您也可以使用特定的键序列分别引用它们:
CTRL-g t # Switch to vertical stack
CTRL-g g # Switch to grid
CTRL-g b # Switch to bottom stack
CTRL-g m # Switch to fullscreen
要使当前聚焦窗口成为新的主窗口,请键入:
CTRL-g [ENTER]
如果在当前主窗口上使用它,它将简单地与下一个窗口(顺时针)交换它。
操作您的Windows和窗口区
虽然这些功能很有用,但有时您需要一些额外的功能。
例如,您可能需要调整主窗口占用的大小。 为此,您可以使用以下键:
CTRL-g l # Increase master window space
CTRL-g h # Decrease master window space
这意味着您可以根据手边的任务调整您的屏幕空间。
有时,你不需要处理一个窗口一段时间,但你仍然需要有它可用。 在传统的窗口系统中,您将最小化窗口,这允许您临时取消它。
同样的事情是可能的dvtm
。 将焦点放在您要最小化的窗口上,然后键入:
CTRL-g .
这将最小化当前聚焦的窗口。
这实际上是一个切换功能。 你仍然可以轻松地循环的窗口和最小化的选择与Windows CTRL-g j
和CTRL-g k
或数字(引用它CTRL-g #
要恢复窗口,只需再次选择它,打CTRL-g .
一次。
通过最小化窗口循环的能力是一个很好的功能,因为它允许它们被操纵和引用。 然而,有时你只想通过当前在窗口区域内的窗口循环。
要做到这一点, dvtm
包括另一组循环命令仅影响未最小化的窗口。 所以如果你有窗口1-5,2和4最小化,这些将循环通过窗口1,3和5:
CTRL-g u # Cycle forward through un-minimized windows
CTRL-g i # Cycle backward through un-minimized windows
一个额外的命令,该命令可能会派上用场偶尔是键盘输出同时发送到所有终端窗口的能力。 您可以切换的完成这个dvtm
包括:
CTRL-g a
这将把所有输出从键盘发送到每个单独的窗口。 这将继续,直到您再次发出命令以关闭此功能。
如何使用dtach让你的会话坚持
所有在此功能dvtm
是伟大的。 它允许应用程序比更专注screen
或tmux
,专注于自己的优势。 然而,正因为如此,它限于窗口管理。
许多用户想要在终端复用器中的一个特征是具有持续会话的能力。 这意味着能够从会话中分离,并保留窗口以及它们中的任何内容,并运行。 稍后,您可以重新连接到会话以继续工作。
虽然dvtm
没有设计这个功能,它的伟大工程与那些只专注于提供分离能力等工具。 这些工具之一,恰当地称作“ dtach
”,非常适合我们的目的。
首先,退出当前dvtm
如果您还没有会话。 您可以键入CTRL-g q
如果你不需要保存任何工作。
现在,我们可以开始一个dtach
会话。 我们需要传递一个这样的命令:
dtach -A /tmp/dvtm -r winch dvtm
让我解释一下这里发生了什么。 首先,我们称之为dtach
命令本身。 这应该是自解释。
- -A:大写“A”标志附加到现有指定的会话,如果它存在,否则,将创建一个新的会话并连接到它。
- 的/ tmp / dvtm:这是在插槽
dtach
将用于存储和传递信息。 此套接字的权限将决定谁可以连接,因此,如果您希望会话不能由服务器上的其他用户使用,请将其放在无法访问的位置。 - -r绞车 :指定重绘方法。 为了让我们的会议后重新连接正确显示,我们需要告诉
dtach
绞车信号发送到该程序。 - dvtm:指定一旦会话开始,我们应该推出
dvtm
内。
如果在此命令类型, dvtm
会议将在一开始dtach
会话。 它看起来完全一样,你的正常dvtm
会话。
唯一的区别是,现在可以从会话中分离,让所有的窗口都运行。 为此,请键入:
CTRL-\
要在分离后回到我们的会话,我们可以再次调用相同的命令。
因为启动和重新连接到会话的命令是相同的,并且因为命令有点麻烦,我们可以创建一个别名,这将让我们毫不费力地管理。
使用文本编辑器打开shell的配置文件:
nano ~/.bashrc
在底部,添加别名,以便您可以轻松地用一个词开始或访问会话。 例如,我在我的配置中选择序列“wm”(对于窗口管理器):
alias wm="dtach -A /tmp/dvtm -r winch dvtm"
保存并关闭文件。 我们现在可以获取文件以获得我们的更改:
source ~/.bashrc
现在,当我们键入wm
,我们将创建一个dtach
如果不存在会话,并启动dvtm
内。 如果会话不存在,该命令会重新连接到会议。
结论
正如你所看到的,通过使用dvtm
管理Windows和dtach
添加持久性,您可以设置一个非常有用的环境,让您使用多个窗口的工作效率。 对于很多用户来说,这提供了所有他们需要的,具有较好的窗口管理布局比任何功能的screen
或tmux
。 考虑在您的其中一台服务器上尝试一下,看看这是否符合您的需求的多路复用解决方案。