解决 kill -9 PID 无法杀死 python 进程的问题:杀死 defunct 进程

1. 一定要用 Ctrl + C 结束程序

Ctrl+Z 和 Ctrl+C 都可以中断程序,但他们却有很大的差异,主要体现在:

  • Ctrl+C: 强制 中断程序的执行 ,这个时候程序就 已经释放内存 ,运行结束。
  • Ctrl+Z: 将 程序暂停 ,但并没有释放内存 ,此时在的进程是挂起转态,可以使用 fg 和bg 命令 前台或 后台 继续该任务。

参考:通俗易懂的告诉你:Ctrl+C 和 Ctrl+Z 的区别

但很多时候由于 Ctrl+C 失效(如在 tmux 中),我们只能被迫使用 Ctrl+Z 将程序暂停,然后再手动结束进程。

2. 如何杀死后台僵尸 (defunct) 进程

使用 Ctrl+Z 结束的进程只是暂停了,依然会占用 GPU 显存,使用 kill -9 PID 也无法将其杀死。

在这里插入图片描述

2.1 查看 defunct 进程

查看当前运行的 python 进程:

ps aux|grep python

查看系统中是否存在 defunct 进程:

ps aux|grep defunct

可以看到此时确实存在 defunct 进程:

root       4541  0.0  0.0      0     0 pts/8    Z    11:42   0:00 [python] <defunct>
root       5182  0.0  0.0   4140  2132 pts/8    S+   11:56   0:00 grep --color=auto defunct

2.2 杀死 defunct 进程的父进程

想要杀死 defunct 进程,只能通过重启系统或杀死其父进程实现。

查看 defunct 进程的父进程:

ps -ef|grep defunct|more

结果如下:

UID     PID(进程)  PPID(父进行)  ...
root       4541      4304      0  11:42 pts/8    00:00:00 [python] <defunct>
root       5187      460       0  11:58 pts/8    00:00:00 grep --color=auto defunct

只需要杀死 PPID 就可以结束 defunct 进程:

kill -9 4304

此时再用 nvidia-smi 查看,显存占用已经被清空了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ctrl A_ctrl C_ctrl V

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值