Linux后台运行程序利器:screen新手入门笔记
screen是Linux系统中一款实用的终端复用工具,它能让程序在后台持续运行,即使关闭终端或断网也不会中断进程。对于需要长时间运行代码(如深度学习训练、数据处理脚本)的用户来说,掌握screen可以避免因网络波动或误关窗口导致的任务失败。以下是零基础也能快速上手的核心操作指南。
一、创建后台任务的两种方法
方法一:直接后台启动(推荐新手)
无需进入交互界面,一步创建后台任务:
screen -dmS 任务名 bash -c "你的命令"
示例:创建名为"train_model"的后台任务,运行Python脚本
screen -dmS train_model bash -c "python /home/user/train.py"
此命令会在后台创建一个独立会话,即使关闭当前终端,train.py也会继续运行。
方法二:先创建会话再执行命令
适合需要在运行前配置环境(如激活虚拟环境)的场景:
-
创建并进入名为"test"的会话:
screen -S test -
在新窗口中执行命令(例如激活conda环境并运行程序):
conda activate abc python /home/user/script.py -
按 Ctrl+a+d 快捷键返回原终端,此时程序已转入后台运行。
二、管理后台任务:查看、进入与退出
1. 查看所有后台会话
想知道当前有哪些screen任务在运行,输入:
screen -ls
输出示例:
25515.test (2023年08月15日 09时18分20秒) (Detached)
22774.train (2023年08月15日 00时01分01秒) (Detached)
- 左侧数字(如25515)是会话唯一ID
- "Detached"表示会话处于后台;"Attached"表示已被当前终端占用
- 中间名称(如test、train)是创建时自定义的任务名
2. 进入后台会话查看实时输出
当需要查看程序运行状态或输出日志时,用以下命令“唤醒”会话:
screen -r 任务名或ID
示例:
- 进入名为"train_model"的会话:screen -r train_model
- 若同名会话较多,使用ID精确指定:screen -r 22774(见“查看会话”示例中的ID)
3. 退出会话返回原终端
在会话窗口中按 Ctrl+a+d,程序会继续在后台运行,你将回到最初的终端界面。
三、结束后台任务:停止程序或删除会话
方法一:正常停止程序(推荐)
- 先进入目标会话:screen -r 任务名或ID
- 按 Ctrl+c 停止当前运行的程序
- 输入 exit 并回车,彻底关闭该会话
方法二:直接删除会话(强制终止)
若程序卡死或需彻底清理,可直接删除会话:
screen -XS 任务名或ID quit
示例:删除ID为22774的会话
screen -XS 22774 quit
此操作会直接终止会话内所有程序,建议仅在必要时使用。
四、避坑指南:同名会话的处理
若创建了多个同名会话(如重复执行screen -S test),screen -ls会显示类似结果:
25515.test (2023年08月15日 09时18分20秒) (Detached)
22774.test (2023年08月15日 00时01分01秒) (Detached)
此时无法通过名称区分,需用会话ID操作:
- 进入ID为22774的会话:screen -r 22774
- 删除ID为22774的会话:screen -XS 22774 quit
总结:screen核心命令速查表
| 操作 | 命令示例 |
|---|---|
| 创建后台任务 | screen -dmS 任务名 bash -c “命令” |
| 查看会话 | screen -ls |
| 进入会话 | screen -r 任务名或ID |
| 后台运行→返回原终端 | Ctrl+a+d |
| 强制删除会话 | screen -XS 任务名或ID quit |
screen的强大之处在于“会话独立于终端”,即使ssh断开连接,后台任务也能稳如泰山。刚开始使用时可能会记混快捷键,但记住screen -ls(查看)和screen -r(恢复)这两个核心命令,就能应对大部分场景。下次跑模型时,试试用screen解放你的终端吧!
4万+

被折叠的 条评论
为什么被折叠?



