【实用技巧】终止nohup后台运行程序的完整步骤(附实战案例)
2026/9/11 3:19:37 网站建设 项目流程

【实用技巧】终止nohup后台运行程序的完整步骤(附实战案例)

在Linux服务器上,我们常通过nohup命令让程序脱离终端后台运行(比如深度学习训练脚本),但需要终止时却不知道该怎么操作?本文结合实战案例,手把手教你精准终止nohup运行的程序。

一、核心原理

nohup运行的程序本质是Linux后台进程,终止的核心逻辑是:
先找到进程的唯一标识(PID)→ 再通过PID终止进程

二、具体操作步骤(附实战案例)

以我实际运行的train_ae.py脚本为例,全程演示操作流程。

步骤1:查找目标进程的PID

使用ps -ef | grep 程序名命令定位进程,这是最常用的方式:

ps-ef|greptrain_ae.py
实战输出解析

我执行上述命令后,得到如下输出:

root 22819 0 99 Jan03 ? 8-20:58:11 python train_ae.py root 31183 30896 0 10:48 pts/10 00:00:00 grep --color=auto train_ae.py

先看懂ps -ef输出列的含义(按顺序):

列位置含义关键说明
第1列UID运行进程的用户(示例中为root)
第2列PID进程ID(终止程序的核心,重点关注)
第3列PPID父进程ID(后台进程通常为0)
第4列%CPU进程占用CPU百分比(99%说明脚本高负载运行)
第5列STIME进程启动时间(Jan03表示1月3日启动)
第6列TTY关联终端(?表示后台运行,nohup特征)
第7列TIME累计运行时间(8天20小时,说明长期运行)
第8列CMD执行的命令(区分目标进程和grep自身)
关键区分
  • 第一行python train_ae.py是真正要终止的目标进程,PID为22819
  • 第二行grep --color=auto train_ae.py是查找命令自身的进程,无需关注,更不要误杀。

步骤2:终止进程(两种方式)

找到PID(22819)后,优先选择「优雅终止」,无效再用「强制终止」。

方式1:优雅终止(推荐)

发送正常终止信号,让程序保存数据、释放资源:

kill22819
方式2:强制终止(优雅终止无效时用)

若程序卡死(比如kill后仍在运行),用-9参数强制杀死(注意:可能导致数据丢失):

kill-922819

步骤3:验证是否终止成功

再次执行查找命令,若仅剩下grep自身进程(或无输出),说明终止成功:

ps-ef|greptrain_ae.py

三、补充技巧(可选)

如果知道程序占用的端口(比如8080),也可以通过端口查PID:

# 查找端口对应的进程lsof-i:8080# 或用netstat(需安装net-tools)netstat-tunlp|grep:8080

四、注意事项

  1. 务必区分「目标进程」和「grep自身进程」,避免误杀其他程序;
  2. 非必要不使用kill -9,尤其是涉及数据写入的程序(如训练脚本、数据库程序);
  3. 普通用户只能终止自己的进程,root用户可终止所有进程(谨慎操作)。

五、总结

  1. 终止nohup后台程序的核心:查PID(ps -ef | grep 程序名)→ 杀进程(kill/kill -9 PID)
  2. 重点关注ps -ef输出的第二列(PID),区分目标进程和grep自身进程;
  3. 优先优雅终止,仅在程序无响应时使用强制终止。

发布小提示

  1. 发布时可在开头加一句场景说明(比如“做深度学习训练时,用nohup跑脚本后需要终止,整理了这套实操流程”);
  2. 代码块和表格保留,提升阅读体验;
  3. 可配图(比如截图你的ps -ef输出),更直观。

关键点回顾

  1. 终止nohup程序的核心是先通过ps -ef | grep 程序名找到目标进程的PID(如22819);
  2. 区分ps输出中目标进程(python train_ae.py)和grep自身进程,避免误操作;
  3. 优先用kill PID优雅终止,无效再用kill -9 PID强制终止,终止后需验证结果。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询