Linux Screen 会话管理一站式指南
在远程运维或开发过程中,我们常遇到这样的窘境:通过 SSH 连接服务器运行一个耗时脚本(如爬虫、模型训练或 WebSocket 服务),结果因为网络波动或电脑休眠导致 SSH 断开,正在运行的任务也随之“死掉”。
Screen 就是解决这个问题的核心神器。它能让你的程序在后台“长生不老”,即使你关掉电脑,任务依然在服务器上稳健运行。
一、 Screen 基础指令
1. 会话生命周期管理
这是最常用的四条命令,涵盖了从创建到销毁的全过程。
| 命令 | 功能描述 | 应用场景 |
|---|---|---|
screen -S <name> |
新建会话 | 开始一个新项目,如 screen -S wss_server |
screen -ls |
查看列表 | 确认后台有多少任务在跑,查看其 PID 和状态 |
screen -r <name/PID> |
恢复会话 | 回到之前的任务界面查看日志或继续操作 |
screen -d <name> |
强制离线 | 当会话显示 Attached 却连不上时,先将其踢下线 |
2. 会话内快捷键
核心规则:进入 Screen 会话后,所有快捷键都需要先按 Ctrl + a 作为前缀指令。
Ctrl + a+d(Detach):最优雅的退出。 将会话切入后台运行,人走程序留。Ctrl + a+k(Kill):直接结束当前会话及其中运行的所有程序。Ctrl + a+[:进入回滚模式。之后可以用方向键或PageUp/Down翻看历史日志。
二、 进阶技巧与避坑指南
1. 解决 "Already Attached" 报错
当你尝试 screen -r 恢复会话,却提示该会话已被占用时,不需要先 -d 再 -r。直接使用以下组合命令即可“暴力夺取”控制权:
|
1 |
screen -D -r <会话名> |
2. 外部强制销毁
如果你确定某个会话不再需要,甚至不想进入它的界面,可以直接在主终端执行:
|
1 |
screen -X -S <会话名> quit |
3. 给日志留个“底”
运行重要脚本时,建议配合 -L 参数开启自动日志记录:
|
1 |
screen -L -S my_project # 输出会自动保存在当前目录的 screenlog.x 中 |
三、 实战场景:配合 Python 服务使用
在部署 WebSocket 服务(如 wss_server.py)时,推荐的工作流如下:
- 启动:
screen -S wss - 运行:
python -u wss_server.py(使用-u参数确保日志实时刷新,不进缓冲区) - 离开:按下
Ctrl + a然后按d。 - 断开 SSH:放心关掉你的终端工具。
- 回归:下次登录后执行
screen -r wss检查任务状态。
四、 总结
Screen 就像是给你的 SSH 增加了一个“存档”和“后台运行”的功能。
- 创建用
-S - 离开用
Ctrl+a, d - 回来用
-r - 清理用
-ls和exit
虽然 Screen 很好用,但对于生产环境的长期服务,建议后续学习 Systemd 进行更规范的服务化管理。
这些信息可能会帮助到你: 关于本站 | 侵权删除 | 进站必看
文章名称:Linux Screen 会话管理一站式指南文章链接:https://www.bysjb.cn/linux-screen.html
THE END
二维码
打赏

共有 0 条评论