好的,这是给同事的简洁版说明:
Screen 三步上手
- 开新窗口:干活前先开个带名字的窗口,不怕断连。
screen-S任务名- 看所有窗口:随时查看都有哪些任务在后台跑。
screen-ls- 重回窗口:断连后重新登录,用这个名字就能接回去。
screen-r任务名如何退出?
在窗口里直接输入exit或按Ctrl+D即可关闭(任务会终止)。
想只断开连接让任务继续?按Ctrl+A然后按D。
在使用screen时,如果出现了两个同名的窗口(通常是因为之前意外断开导致产生了多个会话),仅仅使用screen -r 任务名可能会报错,提示你“There are several suitable screens on…”。
这时候你需要通过进程 ID (PID)来精确删除。以下是操作步骤:
第一步:查看完整信息
首先,运行screen -ls。你会看到类似下面的输出:
There are screens on:12345.my_task(Detached)67890.my_task(Detached)2Socketsin/run/screen/S-user.这里的12345和67890就是PID。
第二步:确认要删除哪一个
如果你进入了其中一个窗口,发现不是你要的那个,你可以直接在那个窗口里输入exit退出并销毁它。
但如果你现在处于主终端(外层),想直接删掉那个多余的,有两种常用方法:
方法 A:在后台强制关闭(最推荐)
如果你确定67890是多余的,直接运行:
screen-X-S67890quit-X: 向指定会话发送命令。-S: 指定 PID。quit: 告诉该窗口关闭。
方法 B:先进入再退出
- 使用 PID 进入那个窗口:
screen-r67890- 进入后,输入
exit或按下快捷键Ctrl + D。这样该窗口就会被彻底关闭并删除。
总结提示
- 重名怎么办?永远使用开头的数字(PID)代替名字来操作,这样绝对不会出错。
- 清理死掉的窗口:如果窗口显示为
(Dead),可以使用screen -wipe自动清理。
需要我帮你写一个自动清理同名窗口、只保留最新一个的脚本吗?
当然可以!tmux是screen的现代替代品,功能更强大、配置更灵活。下面是用tmux实现与你提供的screen三步操作完全对应的操作方式:
✅ tmux 三步上手(对应 screen 的用法)
1️⃣ 开新会话(带名字):干活前先开个带名字的会话,不怕断连
tmux new-s任务名示例:
tmux new -s coding
进入后你就在一个持久化的终端会话中了,即使 SSH 断开,任务也会继续运行。
2️⃣ 查看所有会话:随时查看有哪些任务在后台跑
tmuxls输出示例:
coding: 1 windows (created Mon Jun 10 10:00:00 2024) download: 2 windows (created Mon Jun 10 09:30:00 2024)
3️⃣ 重回会话:断连后重新登录,用名字接回去
tmux attach-t任务名或简写为:
tmux a-t任务名示例:
tmux a -t coding
❓ 如何退出?
想关闭会话并终止所有任务?
在 tmux 会话中直接输入:exit或按
Ctrl+D(当 shell 退出时,tmux 会话也会关闭)。只想断开连接(detach),让任务继续后台运行?
按下组合键:Ctrl+B然后按D注意:tmux 默认前缀键是
Ctrl+B(screen 是Ctrl+A),你可以后续通过配置改成Ctrl+A。
🔧 小贴士(可选)
如果你习惯
screen的Ctrl+A前缀,可以在~/.tmux.conf中添加:set-gprefix C-a unbind C-bbindC-a send-prefix然后重载配置:
tmux source-file ~/.tmux.conftmux还支持多窗口(Ctrl+B c)、多面板(Ctrl+B %或")、复制模式等高级功能,比screen更强大。
✅ 总结对照表:
| 功能 | screen 命令 | tmux 命令 |
|---|---|---|
| 新建命名会话 | screen -S 名字 | tmux new -s 名字 |
| 列出所有会话 | screen -ls | tmux ls |
| 重新连接会话 | screen -r 名字 | tmux attach -t 名字 |
| detach(后台运行) | Ctrl+A→D | Ctrl+B→D |
| 退出并关闭会话 | exit或Ctrl+D | exit或Ctrl+D |
现在你可以放心用tmux替代screen啦!💪加粗样式