如何使用 Linux 屏幕命令 [Essential Guide]

Linux 中的 Screen 命令允许用户创建多个虚拟终端,这些终端可以按名称保存并使用键盘快捷键重新打开。

您是否应该考虑使用屏幕来改善您的工作流程? 让我们看看您可能想尝试的一些原因。

在一个终端窗口中打开多个终端的屏幕截图

如果您在终端上花费大量时间,您可能会发现自己同时使用多个终端来执行不同的任务。

为了 example,您可以通过 SSH 登录到远程服务器并在那里执行一些任务。 同时,在本地系统上工作时,您可能希望查看服务器上的 RAM 和 CPU 利用率。

使用 Screen,您可以从一个“屏幕”完成所有操作。 您可以在不中断当前工作流程的情况下将正在运行的进程和会话发送到后台。

听起来不错? 让我们更多地了解屏幕。

在你的 Linux 发行版上安装 Screen

首先,您需要查看该软件是否已包含在您的 Linux 发行版中。 许多现代发行版都包含它,但通常很容易安装。

您可以通过运行以下命令来检查它是否已安装:

screen --version

我正在使用 Pop OS,它是一个使用 apt 包管理器的 Debian 衍生发行版。 默认情况下不安装屏幕,所以我将输入:

sudo apt install screen

如果您使用不同的包管理器,显然这个命令可能会有所不同。

屏幕中的键绑定

屏幕 相当容易使用,但对于新用户来说仍然会有些困惑,特别是因为它完全依赖于终端中的键盘快捷键。

我创建了一个表格来解释一些基本功能。 您还可以访问键绑定屏幕以获取完整列表。

功能捷径
分离屏幕[ctrl + a] + d
退出/杀死屏幕[ ctrl + a ] + k
切换到下一个[ ctrl + a ] + n
切换到上一个[ ctrl + a ] + p
所有键绑定[ ctrl + a ] + ?

您不会一次按下所有键。 相反,你会打 [ ctrl + a ] 进而 the specified key.

请务必注意,这些快捷方式区分大小写。 像 linux 上的大多数东西一样,它们也可以自定义。 这可以通过编辑 .screenrc 文件通常可以在 /etc/screenrc.

如何在 Linux 中使用屏幕

我将以一种易于遵循的线性方法来研究这些常见的管理任务。 当您演示功能时,这将有效地让您坐在驾驶座上。

启动和命名会话

您可以启动屏幕并应用一个令人难忘的名称。

screen -S top

对于这种情况,我创建了一个名为 top 的命令(不要将它与命令 top 混淆,它可以命名为任何名称)。 它会自动启动指定的会话,我可以完成我需要的任何任务。

我将启动 top 命令的一个实例。 然后我将使用 [ctrl + a] + d 键盘快捷键将其分离。 Top 将继续在后台运行,但我被带回屏幕应用程序。

从这里,我可以开始另一个会话。 让我们称它为“免费”(因为我将在这里使用免费命令,但它可以命名为 session2 等任何名称)并输入:

watch free

将 watch 命令与 free 结合使用可以让您持续监控 RAM 使用情况。

Every 2.0s: free                                                  pop-os: Sun Dec 22 02:25:32 2019

              total        used        free      shared  buff/cache   available
Mem:       32596848     5500212    22689952      894876     4406684    25801480
Swap:             0           0           0

使用 [ctrl + a] + d 键盘快捷键。 因此,您现在有两个进程在后台运行。

你如何回到你的流程来检查它们? 我会向你解释。

快速重新连接

您可以使用会话名称通过选项 -r 轻松重新附加屏幕。

screen -r free

您可以在上面看到这一点。 如果你没有得到相同的结果,你可能在命名会话时犯了一个错误(或者一起忘记了)。 这没什么好恐慌的。

列出屏幕中的所有会话

您可以使用以下命令列出所有打开的屏幕会话。

screen -ls

由于我再次分离了我的免费会话以输入它,我得到以下输出:

屏幕列表会话

使用 PID 重新连接

如果您没有为会话命名,它们将通过分配的 PID 和计算机 ID 进行识别。 您可以使用进程 ID (PID) 访问所需的屏幕,就像访问命名会话一样。

screen -r 685

这是与我命名为“免费”的屏幕相关联的 PID。

关闭屏幕

好的,如果您跟随,您应该打开“免费会话”。 让我们摆脱它并阻止它运行。

你用 [ctrl + a]+ k 杀死活动屏幕。 一条消息将出现在左下方,并带有确认提示。 Enter y 退出会话。 片刻之后,你会得到这样的东西:

[email protected]:~$ screen -r free
[screen is terminating]

您可以通过列出所有会话来确认 -ls 再次。

Linux 中的杀屏

如您所见,“免费屏幕会话”不再处于活动状态。

一次查看多个终端窗口

真正使屏幕不可或缺的是能够在一个会话中将终端拆分为多个窗口,水平或垂直排列。

屏幕将使用活动区域执行拆分功能和创建屏幕功能。 创建拆分后,它将成为活动区域。 但是,您可能会发现无法在活动窗口上输入任何内容。 您需要创建一个屏幕才能执行此操作。 您可以使用初始化外壳程序 [ctrl + a] + c.

还有更多用于管理和导航终端窗口的键盘快捷键:

功能捷径
水平分割(左/右)[ctrl+a]+S
垂直分割(顶部/底部)[ctrl+a]+|
创建屏幕/启动外壳[ctrl+a]+c
按窗口 ID 切换[ctrl+a]+0,1 等
重命名窗口[ctrl+a]+A
关闭活动窗口[ctrl+a]+X
关闭所有非活动窗口[ctrl+a]+Q
切换到下一个窗口[ctrl+a]+[tab]

随意创建自己的安排和探索。 您可以分成许多会话,但我发现,就我个人而言,超出象限的任何内容都会使文本难以阅读。

多终端屏幕 Linux

在表格中,您可以看到重命名窗口的选项。 这与您之前使用的屏幕命名不同 screen -S [name]. 您会注意到左下角的窗口名称。 您可以通过输入获取具有相应名称和 ID 的窗口列表 [ ctrl + a ] + ["].

请记住,您也可以在新窗口中使用之前探索的所有功能。 有很多探索的可能性。

你喜欢屏幕吗?

使用 GNU Screen 自定义终端的方法有很多。 当您通过命令行执行管理任务时,这是提高工作效率并使工作流程更简单的一种非常好的方法。 特别是,如果您在远程机器上工作。

如果您对此不熟悉,请给我们留言,如果您喜欢本教程,请告诉我们。 如果您更有经验,请随时与其他读者分享您的一些首选设置。 我们喜欢读者的反馈。