如何使用Linux Screen

2025-03-11 09:15:59 474

大家是否都遇到过这样的情况:在远程机器上执行一个长时间运行的任务,突然之间连接断开了,SSH会话被终止,正常运行的工作丢失了。幸运的是,有一个叫做screen的实用工具,它能够帮助我们恢复会话。

引言

Screen或GNU Screen是一个终端复用器。换句话说,你可以开始一个screen会话,然后在该会话中打开任意数量的窗口(虚拟终端)。在Screen中运行的进程即使在它们的窗口不可见时也会继续运行,即使断开了连接。


安装Linux GNU Screen

screen包现在在大多数Linux发行版上都是预安装的。您可以通过输入以下命令来检查它是否安装在您的系统上:

screen --version

Screen version 4.06.02 (GNU) 23-Oct-17

如果您的系统上没有安装screen,您可以使用您的发行版的包管理器轻松安装它。

在Ubuntu和Debian上安装Linux Screen

sudo apt update
sudo apt install screen

在CentOS和Fedora上安装Linux Screen

sudo yum install screen

启动Linux Screen

要开始一个screen会话,只需在控制台中输入screen

screen

这将打开一个screen会话,创建一个新窗口,并在该窗口中启动一个shell。

现在您已经打开了一个screen会话,您可以通过输入以下命令来获取命令列表:

Ctrl+a ?

启动命名会话

命名会话在运行多个screen会话时非常有用。要创建一个命名会话,请使用以下参数运行screen命令:

screen -S session_name

选择一个描述性的会话名称总是一个好主意。

使用Linux Screen窗口

当您开始一个新的screen会话时,它会创建一个带有shell的单个窗口。

您可以在Screen会话中有多个窗口。

要创建一个带有shell的新窗口,请输入Ctrl+a c,将从范围0...9中分配第一个可用的数字给它。

以下是一些管理Linux Screen窗口的最常见命令:

  • • Ctrl+a c 创建一个新窗口(带有shell)。

  • • Ctrl+a " 列出所有窗口。

  • • Ctrl+a 0 切换到窗口0(按编号)。

  • • Ctrl+a A 重命名当前窗口。

  • • Ctrl+a S 将当前区域水平分割成两个区域。

  • • Ctrl+a | 将当前区域垂直分割成两个区域。

  • • Ctrl+a tab 将输入焦点切换到下一个区域。

  • • Ctrl+a Ctrl+a 在当前窗口和上一个窗口之间切换。

  • • Ctrl+a Q 关闭除当前区域外的所有区域。

  • • Ctrl+a X 关闭当前区域。


从Linux Screen会话分离

您可以随时通过输入以下命令从screen会话中分离:

Ctrl+a d

在screen会话中运行的程序在您分离会话后将继续运行。


重新连接到Linux Screen

要恢复您的screen会话,请使用以下命令:

screen -r

如果您的机器上有多个screen会话正在运行,您需要在r开关后附加screen会话ID。

要找到会话ID,请使用以下命令列出当前运行的screen会话:

screen -ls

There are screens on:
    10835.pts-0.linuxize-desktop   (Detached)
    10366.pts-0.linuxize-desktop   (Detached)
2 Sockets in /run/screens/S-linuxize.

如果您想恢复screen 10835.pts-0,那么输入以下命令:

screen -r 10835


自定义Linux Screen

screen启动时,它会从/etc/screenrc~/.screenrc(如果文件存在)中读取其配置参数。我们可以使用.screenrc文件根据我们的偏好修改默认的Screen设置。

这是一个带有自定义状态行和一些额外选项的~/.screenrc配置样本:

~/.screenrc

# Turn off the welcome message
startup_message off

# Disable visual bell
vbell off

# Set scrollback buffer to 10000
defscrollback 10000

# Customize the status line
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Linux Screen的基本使用

以下是使用screen的最基本步骤:

  1. 1. 在命令提示符下输入screen

  2. 2. 运行所需的程序。

  3. 3. 使用键序列Ctrl-a + Ctrl-d从screen会话中分离。

  4. 4. 通过输入screen -r重新连接到screen会话。



无论是服务器运维、科学计算还是持续集成,GNU Screen 都是 Linux 环境下不可或缺的生产力工具。通过简单的配置优化,它还能变身个性化终端工作台。现在就掌握这门必备技能,让远程操作更稳定、更高效!


蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,也可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。更多技术知识,蓝队云期待与你一起探索,助力你在 Linux 运维之路上稳步前行。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: