> 环境与工具 > screen

screen: 多终端会话管理

GNU Screen 是一个终端复用器,允许用户在单个终端中管理多个独立的 shell 会话。它提供了强大的功能,例如在网络连接断开时保持会话的活动状态、同时执行多个任务以及与其他用户共享会话。当您需要在后台安全地运行长时间任务时,它尤其有用。

概述

screen 是一个强大的工具,可以在后台维护终端会话、创建和切换多个会话,甚至共享会话。当 SSH 连接断开时,它尤其有用,可以防止任务中断,就像在一个终端窗口中使用多个虚拟终端一样。

主要功能

  • 会话分离与重连 (Detaching and Reattaching)
  • 多窗口管理 (Multiple Windows)
  • 会话共享 (Session Sharing)
  • 日志记录 (Logging)
  • 滚动回溯缓冲区 (Scrollback Buffer)

主要选项

介绍运行 screen 命令时使用的主要选项以及 screen 会话内使用的主要快捷键。

命令执行选项

会话内快捷键 (Ctrl+a 前缀)

生成的命令:

请尝试组合命令。

描述:

`screen` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

screen 命令的各种使用示例。

启动新的 screen 会话

screen

最基本用法,启动一个新的 screen 会话。

指定名称启动会话

screen -S my_long_running_task

为会话命名,以便以后轻松识别和重连。

分离会话 (Detach)

screen -d <session_name_or_pid>

在 screen 会话内按下 Ctrl+a d 分离会话并返回终端。也可以从外部强制分离正在运行的会话。

重连会话 (Reattach)

screen -r

重新连接到已分离的会话。如果只有一个会话,则会自动连接。

通过名称重连特定会话

screen -r my_long_running_task

重新连接到指定名称的会话。

查看运行中的会话列表

screen -ls

查看当前激活的 screen 会话列表。

强制终止会话

screen -X <session_name_or_pid> quit

强制终止不再需要的会话。(注意:可能会中断正在进行的工作)

安装

GNU Screen 通常包含在大多数 Linux 发行版中,或者可以通过包管理器轻松安装。

Debian/Ubuntu

sudo apt update && sudo apt install screen

使用 APT 包管理器进行安装。

CentOS/RHEL/Fedora

sudo yum install screen
# 或
sudo dnf install screen

使用 YUM 或 DNF 包管理器进行安装。

Arch Linux

sudo pacman -S screen

使用 Pacman 包管理器进行安装。

技巧与注意事项

使用 screen 时的一些有用技巧和注意事项。

利用 .screenrc 文件

可以通过用户主目录下的 `.screenrc` 文件自定义 screen 的默认设置。例如,可以设置默认 shell、滚动回溯缓冲区大小、状态栏等。

  • 位置: ~/.screenrc
  • 示例配置: defscrollback 10000 caption always '%{= gk}%H %L=%-w%?%F%fn%W%? %t %{-}%+w %-= %D %m/%d %C%a'

记住 Ctrl+a 前缀

screen 的所有内部命令默认都使用 Ctrl+a 作为前缀。记住这个组合是使用 screen 的关键。如果 Ctrl+a 与其他程序冲突,可以在 `.screenrc` 中更改为其他前缀(例如,将 `escape ^Jj` 改为 Ctrl+j)。

指定会话名称的重要性

通过 `screen -S ` 为会话赋予有意义的名称,可以减少管理多个会话时的混淆,并方便地重连到特定会话。

使用滚动回溯缓冲区

按下 Ctrl+a [ 进入滚动模式,然后可以使用箭头键或 PageUp/PageDown 键查看之前的输出。按 q 退出滚动模式。


相同类别命令