分享最新优惠信息
购买主机更加划算

整理20个常见的screen命令用法详解示例

作为Linux用户,可能经常需要处理长时间运行的任务,例如下载或复制大文件、执行耗时的数据库查询等。有时候,这些重要任务会由于会话超时或其它原因而突然终止。

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

如果你从命令行界面处理多个程序并将程序与终端shell分开,则screen应用程序非常有用它还允许你与其它用户共享会话并分离/附加终端会话。在本文中,小编将简单介绍在Linux系统上安装、配置和使用screen命令通过还可以通过实际示例了解screen命令的用法和优势。

关于screen命令的安装可以参考:Linux系统使用screen命令管理终端的简单方法介绍

screen命令语法

screen命令的语法如下

$ screen [OPTIONS] [ CMD [ ARGS ] ]

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

1、首次启动screen

只需在命令提示符下键入screen即可,然后screen将显示与命令提示符完全相同的界面,入地at所示:

$ screen

screen终端程序

2、显示screen参数

当进入screen时,可以像在正常的命令行环境中一样完成所有工作。但由于screen是一个应用程序,所以它有命令或参数。输入“ Ctrl+A ” 不带引号。然后将在screen上看到所有命令或参数。

screen终端键绑定

要退出帮助screen,可以按“空格键”按钮或“ Enter ”。(请注意,所有使用“ Ctrl+A ”的快捷方式都没有引号)。

3、列出所有打开的窗口

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

列出所有打开的窗口

在上面的输出中,可以看到窗口的编号和名称。第一列代表窗口编号,它从零开始。下一列代表窗口的名称,其默认格式为<user>@<hostname>:<working-directory>

4、终止screen窗口会话

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

终止screen窗口会话

在上面的输出中,可以看到screen命令正在等待用户的确认。它在左下角显示警告消息。就像其它Linux命令一样,可以使用它'y'来继续或'n'中止操作。

5、使用名称启动screen会话

screen命令允许创建一个具有用户定义名称的会话,这在有多个会话可用时会派上用场。因此,下面使用命令的-S选项来创建一个命名会话:

$ screen -S demo-screen

在上面的命令中,demo-screen是会话的名称。

6、使用screen分离终端会话

screen命令的优点之一是可以将其分离。然后可以在不丢失screen上所做的任何操作的情况下恢复它。以下示例场景:

您正处于服务器上的SSH会话期间并且正在使用wget命令为系统下载一个500MB的补丁。

下载过程估计需要2小时,如果断开SSH会话,或者连接突然意外丢失,则下载过程将停止,那么必须从头再来。为避免这种情况,可以使用screen并将其分离。

下面来看看这个命令。首先,必须进入screen。

$ screen

然后可以做下载过程。例如,在Linux Mint系统上,我正在使用apt命令升级我的dpkg包。

$ 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 http://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+Ad”。当按下这些按钮时,将看不到任何东西。输出将是这样的:

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

7、使用screen重新连接终端会话

分离screen后,假设要断开SSH会话并返回主页。在主页面,想要再次通过SSH连接到服务器,并且想要查看刚刚下载过程的进度。这种情况需要恢复screen,这时可以运行此命令:

pungki@mint ~ $ screen -r

你会看到刚刚断开进程仍在运行。

当有超过1个screen会话时,需要键入screen会话ID。可以使用screen -ls查看有多少screen可用。

pungki@mint ~ $ screen -ls
示例输出如下:
pungki@mint ~ $ screen -ls
There are screens on:
        7849.pts-0.mint (14/01/2023 01:50:45 PM)        (Detached)
        5561.pts-0.mint (14/01/2023 11:12:05 AM)        (Detached)
2 Sockets in /var/run/screen/S-pungki

如果要恢复screen 7849.pts-0.mint,请键入此命令。

pungki@mint ~ $ screen -r 7849

8、使用多screen终端窗口

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

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

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

列表screen活动窗口

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

9、重命名screen窗口

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

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

重命名screen窗口

10、screen终端窗口之间的切换

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

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

screen终端窗口之间的切换

在此示例中,小编选择了标题为db-query的窗口。

11、如何移动到下一个screen窗口

可以使用ctrl+a n组合键移动到下一个窗口。现在用一个例子来理解这一点。

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

如何移动到下一个screen窗口

现在,让我们按ctrl+a n两次组合键转到第三个窗口并使用ctrl+a "组合键进行验证,如下图已经切换到第三个窗口:

切换屏幕窗口

12、 如何移动到上一个screen窗口

类似地,可以使用ctrl+a p组合键切换到上一个窗口。

目前正处于第三个窗口。因此,现在使用ctrl+a p组合键两次,并且再次验证是否在第一个窗口中:

如何移动到下一个screen窗口

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

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

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

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

如何移动到下一个screen窗口

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

切换屏幕窗口

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

14、如何跳转到特定的screen窗口

在前面的示例中,已经看到了在窗口之间切换的各种方法。然而,有时候想跳转到特定的窗口。在这种情况下,可以使用窗口编号。首先,让我们使用ctrl+a "组合键查找窗口编号:

如何移动到下一个screen窗口

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

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

切换屏幕窗口

15、如何水平分割screen窗口

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

水平分屏窗口

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

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

16、如何垂直分割screen窗口

同样,可以使用ctrl+a |组合键来垂直分割当前窗口。

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

17、在Linux中启用screen记录

有时记录控制台中所做的事情很重要。假设你是管理大量Linux服务器的Linux 管理员

使用此screen日志记录,这样就无需记下你完成的每条命令。要激活屏幕记录功能,只需按“ Ctrl+AH”。(请注意,使用大写字母 ‘ H‘。使用非大写字母 ‘ h‘,只会在另一个名为hardcopy的文件中创建屏幕截图)。

在屏幕的左下角,会有一个通知告诉你:正在创建日志文件“ screenlog.0 ”。你会在主目录中找到一个screenlog.0文件。

当在screen窗口中时,此功能将记录你所做的一切。要关闭screen记录日志,可以再次按“ Ctrl+AH

另一种激活日志记录功能的方法,可以在第一次运行屏幕时添加参数“-L ”,具体命令如下:

pungki@mint ~ $ screen -L

18、锁定Linux终端screen

screen还具有锁定屏幕的快捷方式。可以按“ Ctrl+A x”快捷键锁定屏幕。如果想快速锁定屏幕,这会很方便。以下是按下快捷方式后锁定屏幕的示例输出。

Screen used by Pungki Arianto  on mint.
Password:

这时候可以使用Linux用户密码来解锁它。

19、将密码添加到screen会话

出于安全原因,你可能希望将密码放入screen会话。每当想重新连接屏幕时,系统都会提示输入密码。此密码与上述锁屏机制不同。

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

password crypt_password

要创建上面的“ crypt_password ”,可以在Linux上使用“mkpasswd”命令以下是密码为“ pungki123 ”的命令。

pungki@mint ~ $ mkpasswd pungki123
l2BIBzvIeQNOs

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

password l2BIBzvIeQNOs

下次运行屏幕并分离它时,当尝试重新附加它时会询问密码,如下所示:

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

输入密码,即“ pungki123 ”,屏幕将再次重新连接

执行完这个屏幕密码后按“ Ctrl-A x”,输出结果如下。

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

这时候向你询问密码两次。第一个密码是Linux用户密码,第二个密码是在.screenrc文件中设置的密码,注意二者的区别。

20、离开screen终端会话

两种方式离开screen。首先,可以使用“ Ctrl+A d”来分离屏幕。其次,可以使用exit命令来终止屏幕。也可以使用“ Ctrl+ A K来结束屏幕。

screen命令汇总

命令 描述
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 或 Ctrl+a <space> 切换到列表中的下一个窗口。
Ctrl+a p 或 Ctrl+a <backspace> 切换到列表中的上一个窗口。
Ctrl+a " 请参阅窗口列表。
Ctrl+a w 显示窗口栏。
Ctrl+a k 杀死当前窗口。
Ctrl+a \ 杀死所有窗口。
Ctrl+a A 重命名当前窗口。
Ctrl+a S 水平分割显示。
Ctrl+a | 或 Ctrl+a V 垂直分割显示。
Ctrl+a tab 跳转到下一个显示区域。
Ctrl+a X 删除当前区域。
Ctrl+a Q 删除除当前区域以外的所有区域。
Ctrl+a H 在屏幕会话中启用日志记录。
Ctrl+a x 锁定(密码保护)显示。

总结

以上就是整理一些日常使用的screen命令。screen命令里面还有很多功能。您可以查看screen手册页以获取更多详细信息。最后希望以上内容更够帮助大家更好的使用screen命来管理Linux服务器。

未经允许不得转载:惠主机 » 整理20个常见的screen命令用法详解示例