简介:在本指南中,我们将讨论 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 命令的其他最佳示例吗?请在下面的评论中告诉我们您的看法。
