linux screen 用法详情 (nohup 的替代方案)
一、screen 是什么?能干嘛?
screen 是一个终端复用器,可以:
在一个 SSH 会话中开多个“虚拟终端”
SSH 断线后,程序仍然在后台运行
随时重新连接到原来的会话
特别适合:
nohup的替代方案跑脚本 / 爬虫 / 训练模型
运维、远程开发
二、安装 screen
# CentOS / Rocky / Alma
yum install -y screen
# Debian / Ubuntu
apt install -y screen
# 查看版本
screen --version
三、最常用的 5 个命令(必会)
1. 创建一个 screen 会话
screen
或带名字(强烈推荐)👇
screen -S mytask
2. 查看所有 screen 会话
screen -ls
示例:
There are screens on:
1234.mytask (Detached)
5678.test (Attached)
3. 从 screen 中“安全退出”(不结束任务)
这是重点
按键顺序:
Ctrl + A 然后按 D
效果:
你回到普通 shell
screen 中的程序继续运行(Detached)
4. 重新进入 screen 会话
screen -r
或指定名称 / ID:
screen -r mytask
screen -r 1234
5. 结束 screen 会话
在 screen 内部执行:
exit
或 Ctrl + D
四、screen 快捷键大全(核心)
screen 的前缀键是:
Ctrl + A
| 操作 | 快捷键 |
|---|---|
| 分离当前会话 | Ctrl + A → D |
| 创建新窗口 | Ctrl + A → C |
| 下一个窗口 | Ctrl + A → N |
| 上一个窗口 | Ctrl + A → P |
| 窗口列表 | Ctrl + A → " |
| 关闭当前窗口 | Ctrl + A → K |
| 重命名窗口 | Ctrl + A → A |
| 查看帮助 | Ctrl + A → ? |
五、screen 多窗口示例(非常实用)
screen -S dev
Ctrl + A→C:新窗口(跑服务)Ctrl + A→C:再开一个(tail 日志)Ctrl + A→":选择窗口Ctrl + A→A:改窗口名
你就能在一个 SSH 里管理多个任务。
六、screen + 后台任务(替代 nohup)
传统 nohup(不推荐)
nohup php artisan queue:work &
推荐 screen 用法
screen -S queue
php artisan queue:work
Ctrl + A → D
优点:
能随时回来看输出
能 Ctrl+C 停止
能交互
七、强制接管 / 踢掉别人会话
会话被“占用”时
screen -r mytask
提示:
There is a screen on:
1234.mytask (Attached)
强制接管:
screen -d -r mytask
八、screen 日志(保存输出)
screen -L
或在会话中:
Ctrl + A → H
日志文件:
screenlog.0