Linux Screen 命令入门 [20 个有用示例]
简介:在本指南中,我们将讨论 screen 命令的一些有用示例。在本指南结束时,用户将能够使用单个 Linux 终端窗口处理多个 shell 会话。
作为 Linux 用户,我们经常需要处理长时间运行的任务,例如 – 下载或复制大文件、执行耗时的数据库查询等。有时这些重要任务会因会话超时而突然终止。
为了缓解这种情况,我们可以使用screen命令,这是一个全屏软件程序,可用于在多个进程(通常是交互式 shell)之间多路复用物理控制台。它允许用户在单个终端窗口管理器中打开多个单独的终端实例。
如果您要从命令行界面处理多个程序并将程序与终端 shell 分离,则screen应用程序非常有用。它还允许您与其他用户共享您的会话并分离/附加终端会话。
在本指南中,我们将讨论如何在 Linux 系统上安装、配置和使用screen 命令。在本指南中,我们将通过实际示例了解screen 命令的用法和好处。
那么让我们开始吧。
在 Linux 中安装 Screen 命令
在我的Ubuntu 服务器版本上,screen命令已默认安装。但是,Linux Mint默认没有安装screen,因此我需要先使用apt-get 命令安装它,然后才能使用它。
请按照您的发行版安装程序来安装屏幕。
$ 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
其实,screen是Linux中一个非常好的终端多路复用程序,它隐藏在数百条Linux命令里面。
让我们通过以下示例开始了解 Linux 中screen命令的用法。
Screen 命令语法
screen命令的语法如下
$ screen [OPTIONS] [ CMD [ ARGS ] ]
在上面的语法中,我们可以看到所有的参数都是选项,它们用方括号表示([])
。
1. 首次启动屏幕
只要在命令提示符下输入screen ,屏幕就会显示出与命令提示符完全相同的界面。
$ screen
2. 显示屏幕参数
当你进入screen时,你可以像在普通命令行环境中一样完成所有工作。但由于 screen是一个应用程序,所以它有命令或参数。
输入“ Ctrl-A ”和“ ? ”(不带引号)。然后您将在屏幕上看到所有命令或参数。
要退出帮助屏幕,您可以按“空格键”按钮或“ Enter ”。 (请注意,所有使用“ Ctrl-A ”的快捷键均不带引号)。
3.如何列出所有打开的窗口
在前面的示例中,我们使用 screen 命令启动了一个新的 shell 会话。现在让我们使用ctrl-a + "
组合键列出当前 screen 会话的所有打开的窗口:
在上面的输出中,我们可以看到窗口的编号和名称。第一列表示窗口编号,从零开始。
下一列代表窗口的名称,其默认格式是<user>@<hostname>:<working-directory>
。
4.如何终止 Screen 窗口会话
我们可以使用组合键终止活动窗口会话ctrl-a + k
。需要注意的是,此操作将中断当前虚拟窗口的命令执行。
在上面的输出中,我们可以看到screen命令正在等待用户的确认。它在左下角显示警告信息。
就像其他 Linux 命令一样,我们可以用来'y'
继续或'n'
中止操作。
5. 如何通过姓名开始 Screen 会话
screen命令允许我们创建一个具有用户定义名称的会话,这在有多个可用会话时非常方便。
因此,让我们使用-S
命令的选项来创建一个命名会话:
$ screen -S demo-screen
在上面的命令中,demo-screen是会话的名称。
6. 使用 Screen 分离终端会话
屏幕的优点之一是您可以将其拆下。然后,您可以将其恢复,而不会丢失您在屏幕上所做的任何操作。以下是示例场景:
您正在服务器上使用SSH。假设您正在 使用wget 命令下载400MB 的系统补丁。
下载过程预计需要2 小时。如果您断开SSH会话,或者突然意外丢失连接,则下载过程将停止。您必须从头开始。为了避免这种情况,我们可以使用屏幕并将其分离。
看一下这个命令。首先,你必须进入屏幕。
$ 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-A
”和“ d
”。按下这些按钮时,您将看不到任何内容。输出将如下所示:
[detached from 5561.pts-0.mint] pungki@mint ~ $
7. 使用 Screen 重新连接终端会话
分离屏幕后,假设您要断开SSH会话并回家。回到家后,您再次开始通过SSH连接到服务器,并且想要查看下载过程的进度。为此,您需要恢复屏幕。您可以运行以下命令:
pungki@mint ~ $ screen -r
并且你会看到你离开的进程仍在运行。
当你有多个screen会话时,你需要输入 screen 会话ID。使用 screen -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. 使用多屏终端窗口
当您需要多个屏幕来完成工作时,这可能吗?是的,这是可能的。您可以同时运行多个屏幕窗口。有 2(两种)方法可以做到这一点。
首先,您可以分离第一个屏幕并在真实终端上运行另一个屏幕。其次,您可以按照所示进行嵌套屏幕。
要创建新窗口,请使用ctrl-a + c
组合键两次来创建两个新窗口。接下来,让我们使用ctrl-a + "
组合键列出所有活动窗口:
在上面的输出中,我们可以看到现在有三个窗口。
9. 如何重命名 Screen 窗口
在上例中,我们创建了两个新窗口。但是,它们的默认名称没有提供任何有关它们的详细信息。在这种情况下,我们可以为它们分配一些有意义的名称。
我们可以使用ctrl-a + A
组合键重命名当前窗口会话。此组合键提示用户设置窗口标题:
10. 在 Screen 终端窗口之间切换
在上面的例子中,我们创建了多个窗口。现在让我们看看如何在它们之间切换。
首先,让我们使用ctrl-a + "
组合键列出所有活动窗口。接下来,使用向上或向下箭头键选择适当的窗口。最后,按回车键切换到所选窗口。
在这个例子中,我们选择了标题为“ db-query”的窗口。
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. 如何跳转到特定的 Screen 窗口
在前面的例子中,我们看到了在窗口之间切换的各种方法。但是,有时我们想跳转到某个特定窗口。在这种情况下,我们可以使用窗口编号。
首先,让我们使用ctrl-a + "
组合键来查找窗口编号:
在上面的输出中,第一列代表窗口编号。需要注意的是,screen 命令从零开始编号。
现在,让我们使用ctrl-a + 2
组合键跳转到第三个窗口并验证我们是否在正确的窗口中:
15. 如何水平分割 Screen 窗口
Just like normal terminals, we can also split the screen window. We can use the ctrl-a + S
key combination to split the window horizontally.
Now, we can use the ctrl-a + tab
key combination to jump between the regions.
Lastly, we can use the ctrl-a + X
key combination to remove the current region. It is important to note that here we have to use an uppercase X character.
16. How to Split a Screen Window Vertically
Similarly, we can use the ctrl-a + |
key combination to split the current window vertically:
In addition to this, we can also use the ctrl-a + tab
key combination switch between the regions and the ctrl-a + X
key combination to close the current region.
17. Enable Screen Logging in Linux
Sometimes it is important to record what you have done while you are in the console. Let’s say you are a Linux Administrator who manages a lot of Linux servers.
With this screen logging, you don’t need to write down every single command that you have done. To activate the screen logging function, just press “Ctrl-A
” and “H
“. (Please be careful, we use a capital ‘H
’ letters. Using non-capital ‘h
’, will only create a screenshot of the screen in another file named hardcopy).
At the bottom left of the screen, there will be a notification that tells you to like: Creating logfile “screenlog.0“. You will find a screenlog.0 file in your home directory.
This feature will append everything you do while you are in the screen window. To close the screen to log running activity, press “Ctrl-A
” and “H
” again.
Another way to activate the logging feature, you can add the parameter “-L
” when the first time running the screen. The command will be like this.
pungki@mint ~ $ screen -L
18. Lock Linux Terminal Screen
The screen also has a shortcut to lock the screen. You can press the “Ctrl-A
” and “x
” shortcuts to lock the screen. This is handy if you want to lock your screen quickly. Here’s a sample output of the lock screen after you press the shortcut.
Screen used by Pungki Arianto on mint. Password:
You can use your Linux password to unlock it.
19. Add Password to Screen Session
For security reasons, you may want to put the password to your screen session. A Password will be asked whenever you want to re-attach the screen. This password is different from the Lock Screen mechanism above.
To make your screen password protected, you can edit the “$HOME/.screenrc” file. If the file doesn’t exist, you can create it manually. The syntax will be like this.
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 终端会话
有两种方法可以离开屏幕。首先,我们使用“ 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 |
锁定(密码保护)显示。 |
以上就是screen命令的一些日常用法。screen命令中还有很多功能。您可以查看screen 手册页了解更多详细信息。
您知道 Linux 中 screen 命令的其他最佳示例吗?请在下面的评论中告诉我们您的观点。