Linux系统中的screen命令是一款功能强大的终端复用工具,它可以让用户在单个终端窗口中创建多个独立的会话,并且支持会话的后台保持,即使当前SSH连接断开,会话内的程序也会继续运行,非常适合运行长时间任务或者需要同时管理多个终端操作的场景。

screen命令的安装
大部分Linux发行版默认没有安装screen命令,需要手动安装,不同发行版的安装命令如下:
- Debian/Ubuntu系统:使用apt包管理器安装
- CentOS/RHEL系统:使用yum或者dnf包管理器安装
- Arch Linux系统:使用pacman包管理器安装
以Ubuntu系统为例,安装命令如下:
# 更新软件包索引 sudo apt update # 安装screen sudo apt install screen -y
screen基础操作
创建新会话
直接执行screen命令可以创建一个默认名称的新会话,也可以指定会话名称方便后续管理:
# 创建默认名称的会话 screen # 创建名称为test的会话 screen -S test
查看已有会话
使用-ls参数可以查看当前系统中所有的screen会话:
screen -ls # 输出示例 # There is a screen on: # 12345.test (2024年01月01日 10:00:00) (Attached) # 1 Socket in /run/screen/S-root.
分离会话
在screen会话内部,按下快捷键Ctrl+A后再按下d,即可将会话分离到后台运行,此时终端会回到原来的shell界面,会话内的程序会继续执行。
重新连接会话
如果需要回到之前分离的会话,可以使用-r参数,指定会话ID或者会话名称即可:
# 通过会话ID重新连接 screen -r 12345 # 通过会话名称重新连接 screen -r test
关闭会话
在screen会话内部,执行exit命令或者直接按下Ctrl+D即可关闭当前会话,也可以在外部通过-X quit参数强制关闭指定会话:
# 强制关闭名称为test的会话 screen -X -S test quit
常用快捷键说明
screen会话内部的所有快捷键都需要先按下Ctrl+A作为前缀,常用的快捷键如下:
| 快捷键 | 功能说明 |
|---|---|
| Ctrl+A d | 分离当前会话,将会话放到后台运行 |
| Ctrl+A c | 在当前会话中创建一个新的窗口 |
| Ctrl+A n | 切换到下一个窗口 |
| Ctrl+A p | 切换到上一个窗口 |
| Ctrl+A w | 显示当前会话中的所有窗口列表 |
| Ctrl+A k | 关闭当前窗口 |
| Ctrl+A [ | 进入复制模式,可以滚动查看历史输出内容 |
实际应用场景示例
假设我们需要在服务器上运行一个需要执行几个小时的备份脚本,为了避免SSH断开导致脚本终止,可以使用screen来管理:
# 创建名称为backup的会话 screen -S backup # 在会话中执行备份脚本 sh /home/backup.sh # 按下Ctrl+A d分离会话,此时脚本会在后台继续执行 # 之后可以随时通过screen -r backup重新连接查看执行进度
使用screen命令可以有效解决Linux下长时间任务因终端断开而终止的问题,同时其多窗口管理功能也能提升多任务操作的效率,是Linux系统管理中非常实用的工具。