linux 僵尸进程 关闭看不见的进程

多卡训练,如果显存不够,程序会崩溃退出,但是gpu显存会一直占用。

nvidia-smi看不到相关进程,关闭进程方法:

目录

查找 NVIDIA 设备相关文件的进程:

查询入口文件并关闭进程

查询进程:

关闭方法 1: 使用 pkill

方法 2: 使用 ps, grep 和 awk 结合 kill


查找 NVIDIA 设备相关文件的所有进程:


您可以使用 lsof 命令查找所有打开了与 NVIDIA 设备相关文件的进程:

sudo lsof /dev/nvidia*

关闭进程:

kill -9 pid

sudo kill -9 pid

查询入口文件并关闭进程

ps aux | grep "train_70.py"

pkill -f train_70.py

查询进程:

ps aux | grep python3

关闭方法 1: 使用 pkill

pkill 命令允许你根据程序名称和其他属性来发送信号。如果你想要结束所有名为 train_v5lite_70.py 的进程,可以使用:

pkill -f train_70.py

这里 -f 选项告诉 pkill 匹配整个命令行,而不仅仅是进程名。这很重要,因为 train_v5lite_70.py 可能不是进程名,而是命令行的一部分。

方法 2: 使用 psgrep 和 awk 结合 kill

如果你想要更精确地控制哪些进程被结束,或者你的系统不支持 pkill,可以使用 psgrep, 和 awk 来获取进程ID,并将它们传递给 kill 命令:

ps aux | grep "train_v5lite_70.py" | awk '{print \$2}' | xargs kill

这个命令的组成部分如下:

  • ps aux | grep "train_v5lite_70.py" 会找出所有包含 train_v5lite_70.py 的进程。
  • awk '{print \$2}' 会打印出每一行的第二列,即进程ID (PID)。
  • xargs kill 会将 awk 获取的每个 PID 作为参数传递给 kill 命令,从而结束这些进程。

如果进程拒绝结束,你可以使用 kill -9 强制结束它们,但请注意这是一个粗暴的方法,可能会导致数据丢失或其他问题:

ps aux | grep "train_v5lite_70.py" | awk '{print \$2}' | xargs kill -9

在执行任何强制结束命令之前,请确保你了解可能的后果,并确认这些进程可以安全地结束。

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/134816450