Skip to content

Screen 使用说明文档

screen 是一个强大的 Linux/Unix 终端复用工具,允许用户在单个终端窗口中管理多个会话。它特别适合在远程服务器上运行长时间任务,即使断开连接也能保持会话运行。本文档将介绍 screen 的基本用法,包括创建、进入、退出会话以及其他常用操作。

1. 安装 Screen

在大多数 Linux 发行版中,screen 通常已预装。如果未安装,可以通过以下命令安装:

  • Ubuntu/Debian:

    bash
    sudo apt update
    sudo apt install screen
  • CentOS/RHEL:

    bash
    sudo yum install screen

安装完成后,运行以下命令检查版本,确认安装成功:

bash
screen --version

2. 基本操作

2.1 创建并进入新会话

使用以下命令创建一个新的 screen 会话并为其命名(例如 test1):

bash
screen -S test1
  • -S 参数用于指定会话名称,便于后续管理。
  • 执行后,您将进入一个新的终端会话。

2.2 进入已有会话

如果您想重新连接到一个已存在的 screen 会话,可以使用:

bash
screen -r test1
  • -r 表示恢复(resume)指定会话。
  • 如果会话名称唯一,也可以直接使用 screen -r(会自动连接到唯一的会话)。

注意:如果会话处于“Attached”状态(已在其他终端连接),需要先使用以下命令分离:

bash
screen -d test1

然后再用 screen -r test1 重新连接。

2.3 退出会话

要暂时退出 screen 会话(保持后台运行),使用以下快捷键:

bash
Ctrl+a, d
  • 按住 Ctrl+a,然后按 d(detach),会话将分离并返回到主终端。
  • 分离后的会话会继续在后台运行,您可以随时重新连接。

2.4 列出所有会话

查看当前所有 screen 会话的列表:

bash
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 会话,可以在会话内输入:

bash
exit

或者,在会话外使用以下命令:

bash
screen -X -S test1 quit
  • -X 表示发送命令,-S 指定会话名称,quit 终止会话。

3. 高级用法

3.1 分屏功能

screen 支持在单个会话中创建多个窗口或分屏:

  • 创建新窗口

    bash
    Ctrl+a, c

    创建一个新的终端窗口,您可以在不同窗口运行不同任务。

  • 切换窗口

    bash
    Ctrl+a, n  # 切换到下一个窗口
    Ctrl+a, p  # 切换到上一个窗口
    Ctrl+a, 0-9  # 切换到指定编号的窗口(0-9)
  • 垂直分屏

    bash
    Ctrl+a, |

    将当前窗口垂直分割为两个区域。

  • 水平分屏

    bash
    Ctrl+a, S

    将当前窗口水平分割为两个区域。

  • 切换分屏区域

    bash
    Ctrl+a, Tab

    在分屏区域之间切换焦点。

3.2 共享会话

screen 支持多用户共享同一会话,适合协作调试或教学:

  1. 主机用户创建会话并启用多用户模式:

    bash
    screen -S shared_session
    Ctrl+a, :multiuser on
    Ctrl+a, :acladd username  # 添加允许访问的用户
  2. 其他用户连接到共享会话:

    bash
    screen -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 的行为。例如:

bash
# 设置默认会话启动时显示的欢迎信息
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 是一个功能强大且灵活的工具,适合需要长时间运行任务或多任务管理的场景。通过掌握创建、恢复、分离和终止会话的基本操作,以及分屏、共享会话等高级功能,您可以显著提高终端工作效率。

如果您需要更多帮助,请查阅官方文档或使用以下命令查看内置帮助:

bash
man screen

Released under the MIT License.