screen是一个全屏幕软件程序,他可以用于在若干进程(一般交换的shells)之间复用一个物理console。它提供给用户在单个终端窗口管理器中打开若干单独的终端实例。
如果你从一个命令行接口处理多个程序以及对于从终端shell分开程序,screen非常有用。它也允许你与其他用户共享你的会话以及分离/连接终端会话。
首先安装screen:
[root@areadetector blctrl]# dnf install screen -y
Last metadata expiration check: 0:07:31 ago on Wed 29 Jun 2022 09:30:22 AM CST.
Dependencies resolved.
===================================================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================================================
Installing:
screen x86_64 4.6.2-12.el8 epel 581 k
...
Installed:
screen-4.6.2-12.el8.x86_64
Complete!
[root@areadetector blctrl]#
实际上,screen是一个在Linux中非常好的终端复用程序。
用以下示例展示在Linux中screen命令的用法:
首次启动screen
在命令提示中只要输入screen。接着screen将显示一个与命令提示完全相同的接口。
[root@areadetector blctrl]#
显示screen参数
当你输入screen时,你能够做所有如你在正常命令行环境中的工作。但由于screen是一个应用程序,所以它有命令或者参数。
输入不带引号的"ctrl-A"和"?"。则你将在这个screen上的所有命令或参数。
要推出scren的帮助,你可以输入"空格"按钮或者"回车"。
用screen分离终端会话
screen的其中一个优势是你可以分离它。接着,你能够恢复它而不会丢失你已经在这个screen上做的任何事情。这是一个简单的场景:
你SSH登录到你的服务器中。我们说你正在使用curl命令下载OpenJDK16。
下载过程估计需要花费2小时时长。如果你断开SSH会话或者连接意外丢失,则下载过程将停止。你必须再次从头开始。为了避免那样,我们可以使用一个screen并且分离它。
看一下这个命令。首先,你必须输入screen。
[root@localhost dbuser]#
接着你可以进行下载过程。例如在AmaLinux上,使用curl命令。下载输出如下:
当下载正在进行时,你可以输入"ctrl+A"和"d"。当你按下那些键时,你将看不到任何东西。输出像这样:
[detached from 51614.pts-1.localhost]
[root@localhost dbuser]#
用screen重新连接终端会话
在你分离这个screen后,我们就说你能够断开你的SSH会话并且回家。在你家里,你再次启动SSH到你的服务器并且你想要看一下你下载进程的进度。为了做这件事,你需要恢复这个screen。你可以运行这条命令:
[root@localhost dbuser]# screen -r
并且你将看到你留下的下载过程已经运行结束了。
[root@localhost dbuser]# curl -O https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-x64_bin.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 175M 100 175M 0 0 13.8M 0 0:00:12 0:00:12 --:--:-- 11.4M
当你有多个screen会话,你需要输入screen会话ID。使用screen -ls看到多少个screens是可用的。
[root@localhost dbuser]# screen -ls
There is a screen on:
51614.pts-1.localhost (Detached)
1 Socket in /run/screen/S-root.
如果你要恢复screen 61614.pts-1.localhost,你输入这条命令:
[root@localhost dbuser]# screen -r 51614
使用多个screen终端窗口
当你需要多个screen来进行你的工作时,可能吗?可能的。你可以同时运行多个screen窗口。做这件事有两种方式。
第一种,你可以在真实终端中分离第一个screen并且允许另一个screen。 第二种方式,你进行嵌套screen。
在Screen终端窗口之间切换
当你做了嵌套screen,你可以使用"Ctr+A"和"n"在screen之间切换。它将移动到下个screen。当你需要回退到前一个screen,只要按"Ctrl+A"和"p"。
要创建一个新screen窗口,只要按"Ctrl+A"和"c"。
在Linux中使能Screen登录
有时记录下你在console中时所作事情是重要的。假设你是一个管理很多Linux服务器的Linux管理员。
用screen登录,你不需要几下你已经做的每个单条命令。要激活screen日志功能,只要按"ctrl-A"和"H"。(请小心,我们使用大写'H'字母。使用小写'h',将只在另一个名为hardcopy文件中创建这个screen的一个截屏)。
在这个screen的左下角,将有一个像这样告诉你的通知: Create logfile "screenlog.0"。你将在你的家目录中发现screenlog.0文件。
这种特性将在末尾添加你在这个screen窗体中时做的所有事情。要关闭screen激活运行日志,再次按"ctrl-A"和"H"。
激活日志特性的另一种方式是,你在首次运行screen时添加参数"-L"。命令像这样:
[root@localhost dbuser]# screen -L
锁定Linux终端screen
screen也有锁屏的快捷方式。你可以按"ctrl+A"和"x"快捷方式来锁屏。如果你想要快速锁屏,这是方便的。这是在你按快捷方式后锁屏输出的样子。
Screen used by root <root> on localhost.
Password:
你可以使用你的Linux密码来解锁它。
离开screen终端会话
有两种方式离开screen。第一种使用"Ctrl+A"和"d"分离这个screen。第二种,我们可以使用exit命令终结这个screen。我们也可以使用"ctrl+A"和"K"来杀掉这个screen。