如何在UbuntuVPS上使用DVTM和Dtach作为终端窗口管理器

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍

当您开始使用多个远程服务器时,您打开的终端会话的数量可能会开始变得不堪重负。 很多时候,例如在编译代码时,您的终端被一个长时间运行的进程占用。 为了解决这个问题并避免必须连接新的 SSH 会话才能继续工作,发明了终端多路复用器。

终端多路复用器允许您在单个“主”会话中管理多个终端窗口。 它们允许您以某种类似于图形窗口管理器的方式轻松地安排窗口并与之交互。 最流行的两个工具是 GNU screentmux 多路复用器

在本指南中,我们将讨论一种不同的方法。 虽然其他两个选项对许多人都有好处,但它们比大多数用户需要的要重一些,并且缺乏一些漂亮的演示。 为了解决这些问题,我们将向您展示如何结合使用 dvtm,一个动态虚拟终端管理器,它将处理窗口管理,以及 dtach 一个允许您分离会话的实用程序坚持。 这是一个更轻量级的解决方案,并且更适合某些人。

我们将介绍这些在 Ubuntu 12.04 VPS 实例上的安装和使用,但大多数发行版应该能够通过一些修改来使用这些步骤。

安装组件

在 Linux 服务器上做大多数事情的第一步是确保您拥有所需的工具。

在我们的例子中,我们必须下载并安装 dtachdvtm。 幸运的是,Ubuntu 12.04 存储库提供了这两个实用程序。 我们需要刷新我们的本地包索引,然后我们可以安装我们需要的东西:

sudo apt-get update
sudo apt-get install dvtm dtach

这就是我们所需要的! 我们现在可以开始探索这些工具是如何工作的。

如何使用 dvtm 终端管理器

dvtm 终端管理器是一个窗口管理器,它试图模拟一些图形平铺窗口管理器用户喜欢的功能和属性,例如 awesomewmdwm、[X204X ]、xmonad等 它使您可以轻松组织窗口并操纵屏幕空间以满足您的需求。

要启动 dvtm 会话,您只需从命令行调用它:

dvtm

─[demouser@dvtm: ~ #1]────────────────────────────────────────────────
demouser@dvtm:~#

如您所见,您现在有一个新的终端会话,但它上面有一个标题。 这个标题基本上是一个窗口标题栏。 它告诉您它正在管理的会话和窗口编号。

您需要知道的第一件事是所有 dvtm 命令都以“mod”键序列开头。 当您点击此序列时,它会向 dvtm 发出信号,表明它应该开始侦听并拦截下一次按键。

默认情况下,mod 序列是“CTRL-g”。 因此 dvtm 的每个命令都具有以下格式:

CTRL-g [按键]

基本窗口管理

让我们直接进入并开始使用多个窗口。 您将学习的第一个序列将允许您创建第二个窗口:

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

要销毁 all 窗口并结束 dvtm 会话,请键入:

CTRL-g q

调整平铺布局

当您创建更多窗口时,您会注意到默认情况下,一个区域保持较大,而其他窗口堆叠在一侧。 这是由于平铺布局。

默认情况下,窗口以所谓的“垂直堆栈”平铺布局进行布局。 这将创建一个“主”窗口,所有其他窗口将剩余空间分开。

不过,还有其他可用的布局选项。 创建四个或五个窗口,并在某些窗口中启动一些程序,以便您可以将它们区分开来。

要循环浏览布局,请使用以下顺序:

CTRL-g [SPACE]

默认情况下,您可以按顺序循环浏览的布局是:

  • 垂直堆栈:默认布局。 主窗口位于左侧,所有其他窗口共享右侧的空间。
  • grid:所有窗口都试图在窗口区域中占据相等的空间。 没有相关的主窗口(从技术上讲,它是左上角的空间)。
  • bottom stack:主窗口位于屏幕的上半部分。 其余窗口占据下半部分。
  • fullscreen:最大化当前聚焦的窗口。 您可以像往常一样在最大化状态下循环浏览每个窗口。

您可以使用“空格”键继续循环浏览这些布局,但您也可以使用特定的键序列单独引用它们:

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]

如果您在当前主窗口上使用它,它只会将其与下一个窗口(顺时针)交换。

操作你的窗口和窗口区域

虽然这些功能很有用,但有时您需要一些额外的功能。

例如,您可能需要调整主窗口占用的大小。 为此,您可以使用以下键:

CTRL-g l    # Increase master window space
CTRL-g h    # Decrease master window space

这意味着您可以根据手头的任务调整屏幕空间。

有时,您暂时不需要处理窗口,但您仍然需要让它可用。 在传统的窗口系统中,您将最小化窗口,这允许您暂时将其移开。

dvtm 也可以实现同样的效果。 专注于您希望最小化的窗口,然后键入:

CTRL-g .

这将最小化当前聚焦的窗口。

这实际上是一个切换功能。 您仍然可以轻松地循环浏览窗口并使用 CTRL-g jCTRL-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

有时可能会派上用场的另一个命令是能够同时将键盘输出发送到终端窗口的 all。 您可以通过 dvtm 包括的切换来完成此操作:

CTRL-g a

这会将键盘的所有输出发送到每个单独的窗口。 这将一直持续到您再次发出命令以关闭此功能。

如何使用 dtach 使您的会话持久化

dvtm 中的所有这些功能都很棒。 它允许应用程序比 screentmux 更专注,并专注于其优势。 但是,正因为如此,它仅限于窗口管理。

许多用户希望终端多路复用器具有的一项功能是具有持久会话的能力。 这意味着能够从会话中分离并离开窗口以及其中的任何内容运行。 稍后,您可以重新连接到会话以继续工作。

虽然 dvtm 在设计上没有此功能,但它与其他仅专注于提供分离能力的工具配合使用效果很好。 其中一种工具,恰当地称为“dtach”,非常适合我们的目的。

首先,如果您还没有退出当前的 dvtm 会话。 如果您不需要保存任何工作,可以键入 CTRL-g q

现在,我们可以开始一个 dtach 会话。 我们需要传递这样的命令:

dtach -A /tmp/dvtm -r winch dvtm

让我解释一下这里发生了什么。 首先,我们调用 dtach 命令本身。 这应该是不言自明的。

  • -A:大写的“A”标志如果存在则附加到现有的指定会话,否则,它创建一个新会话并附加到它。
  • /tmp/dvtm:这是 dtach 将用来存储和传递信息的套接字。 此套接字的权限将决定谁可以连接,因此如果您希望服务器上的其他用户无法使用该会话,请将其放置在他们无法访问的地方。
  • -r winch:指定重绘方法。 为了让我们的会话在重新附加后正确显示,我们需要告诉 dtach 将 WINCH 信号发送给程序。
  • 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 管理您的窗口并使用 dtach 添加持久性,您可以设置一个非常有用的环境,让您可以高效地处理多个窗口。 对于许多用户来说,这提供了他们需要的所有功能,具有比 screentmux 更好的窗口管理布局。 考虑在您的一台服务器上试用它,看看这是否是适合您需求的多路复用解决方案。

贾斯汀·艾林伍德