Screen 使用说明文档
screen 是一个强大的 Linux/Unix 终端复用工具,允许用户在单个终端窗口中管理多个会话。它特别适合在远程服务器上运行长时间任务,即使断开连接也能保持会话运行。本文档将介绍 screen 的基本用法,包括创建、进入、退出会话以及其他常用操作。
1. 安装 Screen
在大多数 Linux 发行版中,screen 通常已预装。如果未安装,可以通过以下命令安装:
Ubuntu/Debian:
bashsudo apt update sudo apt install screenCentOS/RHEL:
bashsudo yum install screen
安装完成后,运行以下命令检查版本,确认安装成功:
screen --version2. 基本操作
2.1 创建并进入新会话
使用以下命令创建一个新的 screen 会话并为其命名(例如 test1):
screen -S test1-S参数用于指定会话名称,便于后续管理。- 执行后,您将进入一个新的终端会话。
2.2 进入已有会话
如果您想重新连接到一个已存在的 screen 会话,可以使用:
screen -r test1-r表示恢复(resume)指定会话。- 如果会话名称唯一,也可以直接使用
screen -r(会自动连接到唯一的会话)。
注意:如果会话处于“Attached”状态(已在其他终端连接),需要先使用以下命令分离:
screen -d test1然后再用 screen -r test1 重新连接。
2.3 退出会话
要暂时退出 screen 会话(保持后台运行),使用以下快捷键:
Ctrl+a, d- 按住
Ctrl+a,然后按d(detach),会话将分离并返回到主终端。 - 分离后的会话会继续在后台运行,您可以随时重新连接。
2.4 列出所有会话
查看当前所有 screen 会话的列表:
screen -ls输出示例:
There are screens on:
12345.test1 (Detached)
67890.test2 (Detached)
2 Sockets in /var/run/screen/S-user.- 输出显示会话名称、状态(Detached 或 Attached)以及会话 ID。
2.5 终止会话
要完全终止某个 screen 会话,可以在会话内输入:
exit或者,在会话外使用以下命令:
screen -X -S test1 quit-X表示发送命令,-S指定会话名称,quit终止会话。
3. 高级用法
3.1 分屏功能
screen 支持在单个会话中创建多个窗口或分屏:
创建新窗口:
bashCtrl+a, c创建一个新的终端窗口,您可以在不同窗口运行不同任务。
切换窗口:
bashCtrl+a, n # 切换到下一个窗口 Ctrl+a, p # 切换到上一个窗口 Ctrl+a, 0-9 # 切换到指定编号的窗口(0-9)垂直分屏:
bashCtrl+a, |将当前窗口垂直分割为两个区域。
水平分屏:
bashCtrl+a, S将当前窗口水平分割为两个区域。
切换分屏区域:
bashCtrl+a, Tab在分屏区域之间切换焦点。
3.2 共享会话
screen 支持多用户共享同一会话,适合协作调试或教学:
主机用户创建会话并启用多用户模式:
bashscreen -S shared_session Ctrl+a, :multiuser on Ctrl+a, :acladd username # 添加允许访问的用户其他用户连接到共享会话:
bashscreen -x username/shared_session
注意:需要确保用户有适当的权限,且 screen 配置文件中启用了多用户支持。
3.3 常用快捷键汇总
| 快捷键 | 功能 |
|---|---|
Ctrl+a, d | 分离当前会话 |
Ctrl+a, c | 创建新窗口 |
Ctrl+a, n | 切换到下一个窗口 |
Ctrl+a, p | 切换到上一个窗口 |
Ctrl+a, k | 终止当前窗口 |
Ctrl+a, : | 进入命令模式 |
Ctrl+a, ? | 显示帮助信息 |
4. 常见问题与故障排除
问题:
screen -r提示会话已被占用(Attached)。 解决:使用screen -d -r test1强制分离并重新连接。问题:无法找到会话。 解决:运行
screen -ls检查会话是否存在,或确认会话名称是否正确。问题:快捷键不起作用。 解决:检查是否正确按下
Ctrl+a,并确保未被其他程序拦截。
5. 配置 Screen
您可以通过编辑 ~/.screenrc 文件自定义 screen 的行为。例如:
# 设置默认会话启动时显示的欢迎信息
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}]'保存后,重新启动 screen 会话以应用配置。
6. 总结
screen 是一个功能强大且灵活的工具,适合需要长时间运行任务或多任务管理的场景。通过掌握创建、恢复、分离和终止会话的基本操作,以及分屏、共享会话等高级功能,您可以显著提高终端工作效率。
如果您需要更多帮助,请查阅官方文档或使用以下命令查看内置帮助:
man screen