博客 / Linux/ Linux screen 命令详解:会话管理、后台运行与远程共享

Linux screen 命令详解:会话管理、后台运行与远程共享

一、screen 命令是什么?

Screen 是一个全屏窗口管理器,它允许在单个物理终端(如 SSH 连接)中创建多个独立的虚拟终端会话。用户可以在一个 screen 会话中运行多个程序或任务,即使断开连接,这些程序也会在后台继续运行,之后可以随时重新连接恢复工作界面。

二、如何安装 screen 命令?

大多数 Linux 发行版已预装 screen。如果未安装,可以使用系统包管理器进行安装:

  • CentOS/RHEL/Fedora 系统:sudo yum install screensudo dnf install screen
  • Debian/Ubuntu 系统:sudo apt-get install screen

三、screen 命令基本使用方法

以下步骤解决常见的后台任务管理需求,例如长时间运行的编译、安装过程(如 LNMP)。

1. 创建 screen 会话

执行以下命令创建一个名为 example 的会话:

screen -S example

执行后,你将进入一个新的全屏终端,可以在此运行任何命令。

2. 暂时离开(Detach)会话

当需要临时退出当前会话(但保持其中程序运行)时,使用快捷键:Ctrl + a,然后按 d(即先按 Ctrl 和 a,松开后再按 d)。

3. 恢复(Reattach)screen 会话

要重新连接到已存在的会话,执行:

screen -r example

如果忘记了会话名称,可以先列出所有会话:

screen -ls

输出会显示类似 12345.example 的列表,然后使用 screen -r 12345.examplescreen -r example 恢复。

4. 关闭(终止)screen 会话

在会话内部执行 exit 命令或按 Ctrl + d,会话将终止并显示 [screen is terminating]

四、远程演示与共享会话

Screen 支持多用户同时查看和交互同一会话,适合远程演示:

  1. 演示者在服务器上创建会话:screen -S demo
  2. 观众 SSH 连接到同一服务器后,执行:screen -x demo
  3. 双方将看到完全同步的终端界面。

五、常用快捷键

在 screen 会话中,所有快捷键均以 Ctrl + a 为前缀:

  • Ctrl + a c:在当前会话中创建新窗口
  • Ctrl + a w:显示窗口列表
  • Ctrl + a n:切换到下一个窗口
  • Ctrl + a p:切换到上一个窗口
  • Ctrl + a 0-9:直接切换到第 0 到第 9 个窗口
  • Ctrl + a d:暂时离开当前会话(Detach)

六、快速命令参考

screen -S <name>      # 新建名为 <name> 的会话
screen -ls            # 列出所有会话
screen -r <name>     # 恢复指定会话
screen -d <name>     # 远程 Detach 某个会话(使其在后台运行)
screen -d -r <name>  # 先 Detach 其他地方的连接,再恢复会话

七、忘记会话名怎么办?

如果创建会话时未指定名称或忘记了名称,只需执行 screen -ls 查看当前所有会话。输出中会显示会话 ID(如 12345.pts-0.host)和名称(如果有)。使用 screen -r 12345(仅 ID 数字部分)或完整 ID 即可恢复。

若会话已被 Detach 但无法恢复,可能是会话状态为 Attached,可尝试先执行 screen -d <ID或名称> 强制分离,再使用 screen -r 连接。