Linux终端神器 Screen,让你的会话永不掉线
小李是一名DevOps
工程师,正在远程连接到公司的Linux
服务器上执行一个长时间运行的任务,比如编译一个大型项目:
make build
然而,正当他松口气去喝杯咖啡时,Wi-Fi
断开了!SSH
连接中断,他再次登录后发现编译任务已经终止,只能重新开始。
如何在 SSH 断开后仍然保持进程运行?
答案就是 screen
命令!
🌈什么是Screen?
Screen
是一个非常实用的终端会话管理工具,它可以帮助你在多个虚拟终端(或窗口)之间轻松切换。即使你的 SSH
连接意外断开,也不用担心,因为你的进程会继续运行。你可以在任何时候重新连接并恢复之前的会话,就像一切都没有中断过一样。
🌈Screen的核心用法
📝安装Screen
大多数Linux
发行版默认已安装 screen
,如果没有,可以使用以下命令安装:
Debian/Ubuntu
sudo apt install screen -y
CentOS/RHEL
sudo yum install screen -y
Arch Linux
sudo pacman -S screen
📝启动一个新的Screen会话
screen -S mysession
-S mysession
给会话起一个名字(mysession
),方便后续管理。
📝让进程在后台运行
假设你在screen
中运行了一个任务:
ollama run deepseek-r1:7b
然后,你可以使用快捷键 Ctrl + A
后按 D
,会话就会后台运行,即使SSH断开也不会受影响。
📝重新连接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
📝关闭一个Screen会话
在screen会话中,输入 exit
即可关闭:
exit
或者按Ctrl + D
退出。
🌈Screen高级用法
📝共享Screen会话(多人协作)
如果你想与其他用户共享会话,例如远程协助排查问题,可以让另一位用户运行:
screen -x mysession
这样,他就能看到你的操作,并进行协同输入。
📝锁定 Screen 会话
如果你临时离开但不想让别人操作,可以使用Ctrl + A
后按 X
,然后输入密码进行锁定。如下图所示:
📝自定义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
保护你的进程,让会话永不掉线! 🚀
推荐阅读
- 告别手动操作!用Ansible user模块高效管理 Linux账户
- 登录即见:打造服务器欢迎信息,提升用户体验
- 自动化压缩新姿势!教你用Ansible Archive模块高效管理文件
- 提升运维效率:Ansible systemd 模块操作技巧,让你告别繁琐命令行!
- Ansible fetch模块详解:轻松从远程主机抓取文件
- 告别手动编辑:如何用Python快速创建Ansible hosts文件?