在现代服务器管理和远程开发工作中,网络连接的稳定性是一个永恒的挑战,一次意外的网络中断或SSH连接断开,都可能导致正在运行的长时间任务(如系统更新、数据备份、编译大型项目)半途而废,造成时间和资源的浪费,为了解决这一痛点,screen这款强大的终端复用器应运而生,它允许用户在单个SSH连接中创建多个持久化的会话,即使网络断开,这些会话及其内部运行的程序也会继续在服务器后台执行,本文将详细介绍如何在CentOS系统下安装、配置和使用screen,帮助您打造一个稳定、高效的远程工作环境。

在CentOS上安装Screen
在CentOS的不同版本中,默认的软件包管理器有所不同,CentOS 7及更早版本使用yum,而CentOS 8及之后的版本(包括CentOS Stream)则推荐使用dnf。dnf通常兼容yum的命令,因此安装过程非常相似。
检查是否已安装
在安装之前,您可以先检查系统中是否已经安装了screen,打开终端,输入以下命令:
screen --version
如果系统已经安装,该命令会输出screen的版本号,Screen version 4.06.02 (GNU) 23-Oct-17,如果提示“command not found”或类似信息,则说明尚未安装。
使用yum或dnf进行安装
安装过程非常简单,只需一条命令即可,由于screen位于CentOS的默认软件源中,无需额外配置。
对于CentOS 7系统,使用yum:
sudo yum install screen
对于CentOS 8 / Stream系统,使用dnf:
sudo dnf install screen
执行命令后,系统会列出需要安装的软件包及其依赖,询问您是否继续,输入y并回车,即可开始下载和安装,整个过程通常很快,安装完成后,您就可以再次使用screen --version命令来验证安装是否成功。
Screen基础入门与核心操作
安装完成后,我们就可以开始使用screen了,其核心操作都围绕着一个特殊的快捷键前缀:Ctrl + a,所有对screen会话本身的控制命令,都需要先按下这个组合键。
启动与命名会话
直接启动一个新的Screen会话:
screen
执行后,您会看到一个全新的终端界面,仿佛重新登录了一次,这就是一个
screen会话。
启动一个带名称的会话(强烈推荐):
为会话命名是一个非常好的习惯,尤其是在管理多个会话时,可以方便地识别和操作。screen -S my_project
这里,我们创建了一个名为
my_project的会话。
常用快捷键
进入screen会话后,以下是一些最常用的快捷键组合,请牢记Ctrl + a是所有命令的“前缀”。
| 快捷键组合 | 功能描述 |
|---|---|
Ctrl + a, c | 创建一个新的窗口(Window),并在新窗口中打开一个Shell。 |
Ctrl + a, n | 切换到下一个窗口。 |
Ctrl + a, p | 切换到上一个窗口。 |
Ctrl + a, d | 分离当前会话,这是screen最重要的功能,会话会在后台继续运行。 |
Ctrl + a, k | 杀死当前窗口(会提示确认)。 |
Ctrl + a, | 显示所有窗口的列表,供您选择切换。 |
Ctrl + a, | 显示帮助页面,列出所有快捷键。 |
分离与重连会话
screen的精髓在于“分离”和“重连”。
分离会话:在
screen会话中,按下Ctrl + a,然后按d,您会发现终端回到了您连接服务器时的原始Shell界面,而screen会话及其中的所有任务都已安全地“隐藏”在后台,即使您断开SSH连接,后台任务也不会受影响。重连会话:当您重新连接到服务器后,可以使用以下命令恢复之前的会话。
screen -r my_project
或者,如果您忘记了会话名,可以先列出所有会话:
screen -ls
该命令会显示所有正在运行的
screen会话,There is a screen on: 12345.my_project (Detached) 1 Socket in /var/run/screen/S-root.这里的
12345是会话的进程ID(PID),my_project是会话名,您可以使用screen -r 12345或screen -r my_project来重连,如果只有一个会话,直接使用screen -r即可。
高级技巧与实用配置
掌握基础操作后,一些高级技巧和个性化配置能让您的使用体验更上一层楼。
共享会话

screen的一个强大功能是会话共享,多个用户可以同时连接到同一个screen会话,实时看到对方的操作,非常适合远程协作或教学。
- 用户A 创建一个会话:
screen -S collaboration - 用户A 分离会话:
Ctrl + a,d - 用户B(或用户A从另一处登录)使用以下命令加入会话:
screen -x collaboration
这样,两个用户就进入了同一个会话,可以同步操作和查看。
自定义配置文件
您可以通过创建~/.screenrc文件来自定义screen的行为,例如添加状态栏、禁用启动信息等,一个简单的配置示例如下:
# ~/.screenrc
# 禁用启动时的版权信息
startup_message off
# 定义状态栏,显示时间、窗口列表等
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %Y-%m-%d %{W} %c %{g}]'
# 设置默认的shell
shell -/bin/bash 保存到~/.screenrc文件后,新建的screen会话就会应用这些配置,底部会出现一个信息丰富的状态栏。
在Screen中滚动
默认情况下,您无法直接使用鼠标滚轮在screen窗口中向上滚动历史输出,正确的做法是进入“复制模式”:
- 按下
Ctrl + a,然后按[(左方括号)。 - 您就进入了复制模式,可以使用方向键、
Page Up、Page Down来浏览历史记录。 - 按
Esc键即可退出复制模式,返回正常的终端操作。
相关问答FAQs
问题1:我分离了Screen会话,但是忘记了会话名,也记不住那一串PID数字,怎么办?
解答: 这是非常常见的情况,您完全不需要记住会话名或PID,只需在终端中执行 screen -ls 命令,系统会列出所有当前存在的会话,包括它们的PID和名称,例如输出可能是 my_work (Detached) 和 test (Detached),您可以直接复制粘贴会话名(如 my_work)或PID(如 12345)到 screen -r 命令后面,即 screen -r my_work 或 screen -r 12345,即可重新连接,如果只有一个会话,最简单的方法是直接运行 screen -r,它会自动连接到那个唯一的会话。
问题2:在Screen窗口中,我无法像普通终端一样使用鼠标滚轮来向上查看历史命令,该如何解决?
解答: 这是Screen的默认行为设计,因为它需要管理自己的滚动缓冲区,要查看历史记录,您需要进入“复制模式”,操作步骤是:先按下 Ctrl + a,然后单独按下 [ 键(左方括号),进入复制模式后,您就可以使用键盘上的方向键、Page Up和Page Down键来自由滚动和查看历史输出了,浏览完毕后,按下 Esc 键即可退出复制模式,返回到正常的交互式终端,虽然不如鼠标滚轮直观,但这是Screen标准且可靠的操作方式。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复