Linux 终端神器 Screen,让你的会话永不掉线

开发 Linux
screen​ 是 Linux中非常实用的终端管理工具,特别适用于远程 SSH 连接,能避免因网络中断而丢失任务进程。

小李是一名DevOps工程师,正在远程连接到公司的Linux服务器上执行一个长时间运行的任务,比如编译一个大型项目:

make build

然而,正当他松口气去喝杯咖啡时,Wi-Fi断开了!SSH连接中断,他再次登录后发现编译任务已经终止,只能重新开始。

如何在 SSH 断开后仍然保持进程运行?

答案就是 screen命令!

一、什么是Screen?

Screen是一个非常实用的终端会话管理工具,它可以帮助你在多个虚拟终端(或窗口)之间轻松切换。即使你的 SSH连接意外断开,也不用担心,因为你的进程会继续运行。你可以在任何时候重新连接并恢复之前的会话,就像一切都没有中断过一样。

二、Screen的核心用法

1. 安装Screen

大多数Linux发行版默认已安装 screen,如果没有,可以使用以下命令安装:

  • Debian/Ubuntu
sudo apt install screen -y
  • CentOS/RHEL
sudo yum install screen -y
  • Arch Linux
sudo pacman -S screen

2.. 启动一个新的Screen会话

screen -S mysession

-S mysession 给会话起一个名字(mysession),方便后续管理。

3. 让进程在后台运行

假设你在screen中运行了一个任务:

ollama run deepseek-r1:7b

然后,你可以使用快捷键 Ctrl + A 后按 D,会话就会后台运行,即使SSH断开也不会受影响。

4.  重新连接Screen会话

如果SSH断开或你手动退出了screen,可以使用以下命令恢复会话:

screen -r mysession

如果不记得会话名称,可以先列出所有screen会话:

screen -ls

输出示例:

root@racknerd-a7aa50:~# screen -ls
There is a screen on:
        41964.mysession (02/08/2025 07:37:20 AM)        (Detached)
1 Socket in /run/screen/S-root.
root@racknerd-a7aa50:~#

然后,你可以恢复任意会话:

screen -r 41964

5. 关闭一个Screen会话

在screen会话中,输入 exit 即可关闭:

exit

或者按Ctrl + D退出。

三、Screen高级用法

1. 共享Screen会话(多人协作)

如果你想与其他用户共享会话,例如远程协助排查问题,可以让另一位用户运行:

screen -x mysession

这样,他就能看到你的操作,并进行协同输入。

2. 锁定 Screen 会话

如果你临时离开但不想让别人操作,可以使用Ctrl + A后按 X,然后输入密码进行锁定。如下图所示:

3. 自定义Screen 配置

Screen的默认行为可以通过 ~/.screenrc 配置文件修改,比如启动时自动命名窗口:

startup_message off
caption always "%{= kw}%-w%{= gW}%n %t%{-}%+w"

四、Screen vs Tmux:哪个更好?

screen 和 tmux 都是终端复用工具,tmux 功能更强大,但 screen 更轻量,默认预装在许多 Linux 发行版上。

功能

Screen

Tmux

终端会话保持

多窗口管理

✅(更强大)

窗口分割

自定义配置

一般

更强

社区活跃度

如果你需要更现代化的功能,比如分割窗口、鼠标支持,可以考虑 tmux,但 screen 仍然是一个简单高效的选择。

五、结语

screen 是 Linux中非常实用的终端管理工具,特别适用于远程 SSH 连接,能避免因网络中断而丢失任务进程。对于 DevOps、开发者、运维工程师来说,掌握 screen 可以大大提升工作效率。下次执行长时间任务时,记得用 screen 保护你的进程,让会话永不掉线!

责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2009-03-06 10:01:00

802.11nWLAN

2019-10-25 20:00:06

华为

2019-06-11 15:46:13

screen命令Linux

2022-01-27 15:37:34

Asciinema终端会话记录器开源

2015-05-15 13:25:43

Linux终端命令

2015-05-13 14:26:40

LinuxLinux终端命令

2020-07-20 10:40:52

Linux命令Ubuntu

2020-05-14 13:35:59

开源视频 技术

2022-09-28 14:33:49

终端工具Linux

2018-08-27 08:43:11

Linux终端会话SVG动画

2020-06-21 13:31:26

终端命令开发

2020-07-29 09:06:41

Shell终端工具

2023-06-05 11:40:23

2019-11-15 09:58:04

LinuxAsciinemapython

2009-12-24 13:15:03

2021-08-24 16:20:38

Linux终端

2014-05-12 10:57:41

TermRecord终端会话

2019-10-08 14:02:18

Linux命令终端会话

2022-06-19 14:13:29

tmateLinux

2021-10-25 22:26:31

Windows 11Windows微软
点赞
收藏

51CTO技术栈公众号