news 2026/4/6 14:25:47

【kill】在容器中使用 nohup 启动 Python 训练脚本后,如何正确停止进程?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【kill】在容器中使用 nohup 启动 Python 训练脚本后,如何正确停止进程?

​ 在服务器或 Docker 容器中跑深度学习训练时,nohup几乎是标配操作:(可以参考之前写的文章【在容器中运行长时间 Python 任务:SSH 断开也不怕】

nohuppython scripts/frozen_backbone_train.py>logs/frozen_finetune.log2>&1&

​ 但问题也随之而来:这个后台跑起来的 Python 进程,到底该怎么安全、彻底地停掉?

​ 本文结合一次PyTorch 训练 + DataLoader 多进程的真实排查过程,完整记录正确的 kill 思路。

一、先找到真实在跑的进程

​ 第一步永远不是kill -9,而是确认进程结构

psaux|grephomo_with_vit_frozen.py

​ 可能会看到类似输出:

root1652... python frozen_backbone_train.py root2424... python frozen_backbone_train.py root2425... python frozen_backbone_train.py root2426... python frozen_backbone_train.py...

​ 这时候很多人会懵:为什么同一个脚本会有一堆 Python 进程?

二、为什么会有多个 python 进程?

​ 这是PyTorch 非常典型的行为

2.1 主进程(训练主逻辑)

root1652... python frozen_backbone_train.py
  • 负责:模型 forward / backward / optimizer.step
  • 通常:
    • 运行时间很长
    • CPU / GPU 占用明显
  • 这是你真正要 kill 的进程

2.2 子进程(DataLoader workers)

root2424~2431... python frozen_backbone_train.py

​ 这些通常是:

DataLoader(..., num_workers > 0)
  • 拉起的数据加载子进程,特征非常明显:
    • 一次性出现一串
    • PID 连号
    • CPU 占用相近
    • 内存结构几乎一样
  • 结论:多进程 ≠ 多个训练任务,而是一个训练任务 + 多个数据加载 worker

三、正确的 kill 姿势(推荐)

3.1 方式一:只 kill 主进程(最干净)

kill1652
  • 大多数情况下:主进程退出,所有 DataLoader 子进程会被自动回收

  • 如果进程没有立刻退出

    kill-91652

3.2 方式二:直接按脚本名全部清场

  • 当你确认这个脚本已经不需要了,可以直接:

    pkill-9 -f frozen_backbone_train.py
  • -f:匹配完整命令行

  • 会同时 kill 主进程 + 所有子进程

  • 注意:如果你同时跑了多个同名脚本,这一招会“一锅端”。

四、如何确认真的 kill 干净了?

4.1 再查一次进程

psaux|grepfrozen_backbone_train.py

如果只剩下:

grep--color=auto frozen_backbone_train.py

说明进程已经全部退出

4.2 如果使用 GPU,确认显存释放

nvidia-smi
  • 没有 python 占用显存 → OK
  • 有残留 → 继续kill -9 <pid>

五、小结

  • nohup启动的 Python 进程 ≠ 只有一个进程
  • PyTorch 的DataLoader(num_workers > 0)会产生多个子进程
  • 正确做法是:
    • 优先 kill 主进程
    • 或使用pkill -f一次性清理
  • 养成记录 PID 的习惯,可以极大降低维护成本
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/5 3:56:50

一键部署UI-TARS-desktop:解放双手的AI助手

一键部署UI-TARS-desktop&#xff1a;解放双手的AI助手 [【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS (Vision-Language Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华
网站建设 2026/4/6 2:42:46

全网最全 9个AI论文平台测评:继续教育毕业论文写作必备工具推荐

随着人工智能技术的快速发展&#xff0c;AI写作工具在学术领域的应用越来越广泛&#xff0c;尤其在继续教育领域&#xff0c;毕业论文写作成为许多学员必须面对的挑战。面对选题困难、文献资料繁杂、格式要求严格等问题&#xff0c;一款高效、专业的AI论文平台显得尤为重要。为…

作者头像 李华
网站建设 2026/3/1 6:22:26

java+vue基于springboot传统文化交流活动报名 商城交易平台_a73sf851

目录技术架构核心功能模块技术亮点数据安全部署方案开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;技术架构 基于SpringBoot后端框架与Vue前端框架构建&#xff0c;采用前后端分离设计模式。后端使用MyBatis-Plus进行数据库操…

作者头像 李华
网站建设 2026/4/5 2:39:55

OpenClaw漏洞允许通过恶意链接一键远程执行代码

很多人用 OpenClaw&#xff08;曾用名 Moltbot/Clawdbot&#xff09;是冲着它那句隐含承诺&#xff1a;“本地优先&#xff0c;数据在自己机器上&#xff0c;更安全。” 但这次事件需要你再注重注重安全了&#xff1a;哪怕你的网关只监听在回环地址&#xff08;也就是“只在本…

作者头像 李华
网站建设 2026/3/31 22:32:26

《Seata从入门到实战》第一章:Seata核心概念与架构

本期内容为自己总结归档&#xff0c;欢迎评论区指正~ 第一章&#xff1a;Seata核心概念与架构概览 第二章&#xff1a;AT 模式详解 第三章&#xff1a;TCC模式详解 第四章&#xff1a;Saga模式详解 第五章&#xff1a;XA模式详解 第六章&#xff1a;seata从部署到集成实战&…

作者头像 李华
网站建设 2026/4/5 14:52:05

为什么我不再推荐枚举策略模式?

引言&#xff1a;一个普遍的困惑在Java开发领域&#xff0c;枚举策略模式曾是我工具箱中的"瑞士军刀"。多年来&#xff0c;我像许多开发者一样&#xff0c;热衷于在各种设计模式教程中看到的这种优雅实现&#xff1a;javapublic enum Calculator {ADD {Overridepubli…

作者头像 李华