Linux Screen 命令入门 [20 个有用示例]

简介:在本指南中,我们将讨论 screen 命令的一些有用示例。在本指南结束时,用户将能够使用单个 Linux 终端窗口处理多个 shell 会话。

作为 Linux 用户,我们经常需要处理长时间运行的任务,例如下载或、执行耗时的数据库查询等等。有时,这些重要任务会由于会话超时而突然终止。

为了缓解这种情况,我们可以使用屏幕命令,这是一个全屏软件程序,可用于在多个进程(通常是交互式 shell)之间多路复用物理控制台。它允许用户在单个终端窗口管理器中打开多个单独的终端实例。

屏幕如果您要从命令行界面处理多个程序以及将程序与终端 shell 分开,则应用程序非常有用。它还允许您与其他用户共享您的会话以及分离/附加终端会话。

在本指南中,我们将讨论如何安装、配置和使用屏幕命令在 Linux 系统上。通过本指南,我们将了解屏幕命令使用实际例子。

那么让我们开始吧。

在 Linux 中安装 Screen 命令

在我的Ubuntu服务器版, 这屏幕命令已默认安装。但,Linux薄荷没有屏幕默认安装,所以我需要先使用在使用它之前。

请按照您的发行版安装程序来安装屏幕。

$ sudo apt-get install screen      [On Debian, Ubuntu and Mint]
$ sudo yum install screen          [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/screen   [On Gentoo Linux]
$ sudo apk add screen              [On Alpine Linux]
$ sudo pacman -S screen            [On Arch Linux]
$ sudo zypper install screen       [On OpenSUSE]    

现在,让我们验证该命令是否已成功安装:

$ screen --version

Screen version 4.8.00 (GNU) 05-Feb-20

事实上,屏幕是Linux下一个非常好的终端多路复用器程序,它隐藏在数百个。

让我们开始看看它的用法屏幕Linux 中的命令,示例如下。

屏幕命令语法

的语法屏幕命令如下

$ screen [OPTIONS] [ CMD [ ARGS ] ]

在上面的语法中,我们可以看到所有参数都是选项,它们用方括号表示([])

1. 首次启动屏幕

只需输入屏幕在命令提示符下。然后屏幕将显示与命令提示符完全相同的界面。

$ screen
屏幕终端程序

2. 显示屏幕参数

当您输入屏幕,您可以像在正常命令行环境中一样完成所有工作。但自从屏幕是一个应用程序,因此它有命令或参数。

类型 ”Ctrl-A“ 和 ”” 不带引号。然后您将在屏幕上看到所有命令或参数。

屏幕终端按键绑定

要退出帮助屏幕,您可以按“空格键” 按钮或“进入“。(请注意,所有使用“的快捷方式Ctrl-A” 不带引号)。

3. 如何列出所有打开的窗口

在前面的示例中,我们使用 screen 命令启动了一个新的 shell 会话。现在让我们使用ctrl-a + "组合键列出当前屏幕会话的所有打开的窗口:

列表屏幕打开窗口

在上面的输出中,我们可以看到窗口的编号和名称。第一列代表窗口号,从零开始。

下一列代表窗口的名称,其默认格式为<user>@<hostname>:<working-directory>

4. 如何终止屏幕窗口会话

我们可以使用以下命令终止活动窗口会话ctrl-a + k组合键。需要注意的是,此操作将中断当前虚拟窗口的命令执行。

终止屏幕窗口会话

在上面的输出中,我们可以看到屏幕命令正在等待用户的确认。它在左下角显示警告消息。

就像其他Linux命令一样,我们可以使用'y'继续或'n'中止操作。

5. 如何使用名称启动屏幕会话

屏幕命令允许我们使用用户定义的名称创建会话,当有多个会话可用时,这会派上用场。

那么,让我们使用-S用于创建命名会话的命令选项:

$ screen -S demo-screen

在上面的命令中,演示屏幕是会话的名称。

6. 使用 Screen 分离终端会话

的优点之一屏幕也就是说你可以将其分离。然后,您可以恢复它,而不会丢失您在屏幕上所做的任何操作。这是示例场景:

你正处于中间SSH在您的服务器上。假设您正在下载一个400MB使用以下命令为您的系统打补丁。

下载过程预计需要2小时长的。如果您断开连接SSH会话,或者突然意外丢失连接,则下载过程将停止。你必须重新从头开始。为了避免这种情况,我们可以使用屏幕并将其拆下。

看看这个命令。首先,您必须进入屏幕。

$ screen

然后你就可以进行下载过程了。例如在我的Linux薄荷,我正在升级我的包装袋包使用。

$ sudo apt install dpkg

样本输出

Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be upgraded:
  dpkg
1 upgraded, 0 newly installed, 0 to remove and 1146 not upgraded.
Need to get 2,583 kB of archives.
After this operation, 127 kB of additional disk space will be used.
Get:1 https://debian.linuxmint.com/latest/ 
testing/main dpkg i386 1.16.10 [2,583 kB]
47% [1 dpkg 1,625 kB/2,583 kB 47%]     14,7 kB/s

下载过程中,您可以按“Ctrl-A“ 和 ”d“。按下这些按钮时,您将看不到任何内容。输出将如下所示:

[detached from 5561.pts-0.mint]
pungki@mint ~ $

7. 重新连接带有屏幕的终端会话

分离屏幕后,假设您要断开连接SSH会议和回家。在你的家里,你开始SSH再次连接到您的服务器,您想查看下载过程的进度。为此,您需要恢复屏幕。您可以运行此命令:

pungki@mint ~ $ screen -r

您将看到您离开的进程仍在运行。

当你拥有超过1 个屏幕会话,您需要输入屏幕会话ID。使用屏幕-ls查看有多少个屏幕可用。

pungki@mint ~ $ screen -ls

样本输出

pungki@mint ~ $ screen -ls
There are screens on:
        7849.pts-0.mint (10/06/2021 01:50:45 PM)        (Detached)
        5561.pts-0.mint (10/06/2021 11:12:05 AM)        (Detached)
2 Sockets in /var/run/screen/S-pungki

如果你想恢复屏幕7849.pts-0.mint,然后键入此命令。

pungki@mint ~ $ screen -r 7849

8. 使用多屏幕终端窗口

当您需要超过1 个屏幕做你的工作,可能吗?是的。您可以同时运行多个屏幕窗口。有 2(两种)方法可以做到这一点。

首先,您可以分离第一个屏幕并在真实终端上运行另一个屏幕。其次,您进行如图所示的嵌套屏幕。

要创建新窗口,请使用ctrl-a + c组合键两次可创建两个新窗口。接下来,我们使用ctrl-a + "列出所有活动窗口的组合键:

列表屏幕活动窗口

在上面的输出中,我们可以看到现在有三个窗口。

9. 如何重命名屏幕窗口

在前面的示例中,我们创建了两个新窗口。但是,它们的默认名称并未提供有关它们的任何详细信息。在这种情况下,我们可以给它们指定一些有意义的名称。

我们可以使用ctrl-a + A组合键重命名当前窗口会话。此组合键提示用户设置窗口标题:

重命名屏幕窗口会话

10. 屏幕终端窗口之间的切换

在前面的示例中,我们创建了多个窗口。现在让我们看看如何在它们之间进行切换。

首先,让我们使用以下命令列出所有活动窗口ctrl-a + "组合键。接下来,使用向上或向下箭头键选择适当的窗口。最后按回车键切换到所选窗口。

在屏幕窗口之间切换

在此示例中,我们选择了标题为 – 的窗口数据库查询

11. 如何移动到下一个屏幕窗口

我们可以使用ctrl-a + n组合键移动到下一个窗口。让我们通过一个例子来理解这一点。

首先,切换到第一个窗口并使用ctrl-a + "组合键:

切换到屏幕窗口

现在,让我们按下ctrl-a + n组合键两次转到第三个窗口并使用ctrl-a + "组合键来验证是否相同。

切换屏幕窗口

在上面的输出中,我们可以看到现在我们位于第三个窗口。

12. 如何移至上一屏幕窗口

以类似的方式,我们可以使用ctrl-a + p组合键切换到上一个窗口。

目前,我们正处于第三个窗口。那么,让我们使用ctrl-a + p组合键两次并验证我们是否再次位于第一个窗口:

切换到上一屏幕窗口

在上面的输出中,我们可以看到现在我们回到了第一个窗口。

13. 如何在当前窗口和上一个窗口之间切换

有时,我们只想在两个窗口之间切换。在这种情况下,我们可以使用ctrl-a + ctrl-a组合键。

要理解这一点,首先切换到第一个窗口:

切换到第一屏幕窗口

接下来,切换到最后一个窗口:

移至最后一个屏幕窗口

最后,使用ctrl-a + ctrl-a组合键再次跳转到第一个窗口。

14. 如何跳转到特定屏幕窗口

在前面的示例中,我们看到了在窗口之间切换的各种方法。然而,有时我们想跳转到某个特定的窗口。在这种情况下,我们可以使用窗口号。

首先,让我们使用ctrl-a + "查找窗口号的组合键:

列出屏幕窗口编号

在上面的输出中,第一列代表窗口号。需要注意的是,screen 命令从零开始编号。

现在,让我们使用ctrl-a + 2组合键跳转到第三个窗口并验证我们是否处于正确的窗口中:

跳转到特定屏幕窗口

15. 如何水平分割屏幕窗口

就像普通终端一样,我们也可以分割屏幕窗口。我们可以使用ctrl-a + S水平分割窗口的组合键。

水平分屏窗口

现在,我们可以使用ctrl-a + tab组合键可在区域之间跳转。

最后,我们可以使用ctrl-a + X组合键删除当前区域。需要注意的是,这里我们必须使用大写的 X 字符。

16. 如何垂直分割屏幕窗口

同样,我们可以使用ctrl-a + |垂直分割当前窗口的组合键:

垂直分屏窗口

除此之外,我们还可以使用ctrl-a + tab区域和区域之间的组合键切换ctrl-a + X组合键关闭当前区域。

17. 在 Linux 中启用屏幕日志记录

有时重要的是记录您在控制台中所做的事情。假设你是一个Linux管理员谁管理着很多 Linux 服务器。

有了这个屏幕日志记录,您不需要写下您所做的每一个命令。要激活屏幕记录功能,只需按“Ctrl-A“ 和 ”H“。(请小心,我们使用大写‘H' 的字母。使用非资本'h',只会在另一个名为硬拷贝的文件中创建屏幕截图)。

在屏幕的左下角,会出现一条通知,告诉您喜欢:创建日志文件“屏幕日志.0“。你会发现一个屏幕日志.0文件在你的主目录中。

此功能将附加您在屏幕窗口中所做的所有操作。要关闭屏幕以记录跑步活动,请按“Ctrl-A“ 和 ”H“ 再次。

另一种激活日志记录功能的方法是添加参数“-L” 当第一次运行屏幕时。命令将是这样的。

pungki@mint ~ $ screen -L

18. 锁定 Linux 终端屏幕

屏幕上还有一个快捷方式屏幕。您可以按“Ctrl-A“ 和 ”x” 锁定屏幕的快捷方式。如果您想快速锁定屏幕,这会很方便。这是按快捷方式后锁定屏幕的示例输出。

Screen used by Pungki Arianto  on mint.
Password:

您可以使用您的 Linux 密码来解锁它。

19. 为屏幕会话添加密码

出于安全原因,您可能需要将密码到您的屏幕会话。每当您需要时都会询问密码重新附加屏幕。该密码与锁屏机制同上。

要保护您的屏幕密码,您可以编辑“$HOME/.screenrc” 文件。如果该文件不存在,您可以手动创建它。语法如下。

password crypt_password

为了创建“密码密码”上面,您可以使用“密码“Linux 上的命令。这是带有密码的命令”风基123”。

pungki@mint ~ $ mkpasswd pungki123
l2BIBzvIeQNOs

密码将生成一个哈希密码,如上所示。获得哈希密码后,您可以将其复制到您的“.screenrc” 文件并保存。所以“.screenrc” 文件将是这样的。

password l2BIBzvIeQNOs

下次运行屏幕并将其分离时,当您尝试执行以下操作时,系统会询问您输入密码重新附加其,如下图所示:

pungki@mint ~ $ screen -r 5741
Screen password:

输入您的密码,即“风基123”并且屏幕将重新附加再次。

设置此屏幕密码后,按“Ctrl-A“ 和 ”x”,那么输出就会是这样的。

Screen used by Pungki Arianto on mint.
Password:
Screen password:

系统将要求您输入密码两次。第一个密码是你的Linux密码,第二个密码是您输入的密码.screenrc文件。

20. 离开屏幕终端会话

2(二)离开屏幕的方式。首先,我们使用“Ctrl-A“ 和 ”d” 来分离屏幕。其次,我们可以使用 exit 命令来终止屏幕。您也可以使用“Ctrl-A“ 和 ”K”来杀死屏幕。

屏幕命令备忘单

命令描述
screen -S <session_name>使用会话名称启动新会话。
screen -ls列出正在运行的会话/屏幕。
screen -x附加到正在运行的会话。
screen -r <session_name>使用名称附加到正在运行的会话。
screen -d <session_name>分离正在运行的会话。
Ctrl-a c创建新窗口。
Ctrl-a Ctrl-a更改为上次访问的活动窗口。
Ctrl-a <number>按编号更改为窗口。
Ctrl-a ' <number or title>按编号或名称更改窗口。
Ctrl-a n or Ctrl-a <space>更改到列表中的下一个窗口。
Ctrl-a p or Ctrl-a <backspace>更改到列表中的上一个窗口。
Ctrl-a "请参阅窗口列表。
Ctrl-a w显示窗口栏。
Ctrl-a k杀死当前窗口。
Ctrl-a \杀死所有窗口。
Ctrl-a A重命名当前窗口。
Ctrl-a S水平分割显示。
Ctrl-a | or Ctrl-a V垂直分割显示。
Ctrl-a tab跳转到下一个显示区域。
Ctrl-a X删除当前区域。
Ctrl-a Q删除除当前区域之外的所有区域。
Ctrl-a H在屏幕会话中启用日志记录。
Ctrl-a x锁定(密码保护)显示。

这是其中的一些屏幕日常命令使用情况。里面的功能还是很多的屏幕命令。您可能会看到屏幕手册页了解更多详情。

您还知道 Linux 中 screen 命令的其他最佳示例吗?请在下面的评论中告诉我们您的看法。