如何使用关键字杀死 nvidia-smi 中带有 PID 的 GPU 上的进程?

问题描述 投票:0回答:6

如何在终端中终止特定程序(例如 python)在 GPU 上运行的进程? 例如,上图中有两个进程正在使用 python 运行,然后杀死它们以在 nvidia-smi 中查看下图

python gpu nvidia keyword pid
6个回答
63
投票

接受的答案对我不起作用,可能是因为

nvidia-smi
在不同版本/硬件上有不同的格式。

我正在使用更简洁的命令:

nvidia-smi | grep 'python' | awk '{ print $3 }' | xargs -n1 kill -9

您可以替换 awk 表达式中的

$3
以适合您的
nvidia-smi
输出。它是 PID 出现的第 n 列。


14
投票

使用

nvidia-smi
或 top 命令查看正在运行的进程并终止命令:

sudo kill -9 PID

11
投票

您可以在nvidia-smi中grep python,然后将PID传递给 Kill -9 命令,例如

sudo Kill -9 $( nvidia-smi | grep 'python' | sed -n 's/|\s*[0-9]\s([0-9])\s.*/ /p' | sed '/^$/d')


9
投票

我想当 nvidia-smi 显示占用 GPU 内存的进程时,问题已经得到解答。对我来说,尽管 nvidia-smi 没有显示任何进程,但 GPU 内存正在被使用,我想杀死它们。

这种情况下的方法是使用 fusion 命令来查找使用特定 GPU 设备的进程。就我而言,我想终止使用 GPU 设备 3 的所有进程。 这可以使用以下命令来完成:

sudo fuser -k /dev/nvidia3

您可以使用 -ki 以交互方式终止进程。


6
投票

正如其他答案之一建议您可以使用:(将 5 替换为进程 ID 存在的列号)

nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9

如果您可能需要经常使用它,您可以为该命令创建一个别名:为此,您应该编辑

~/.bash_aliases
文件:

nano ~/.bash_aliases

并将以下行添加到其中并保存文件:

alias killgpuprocess="nvidia-smi | grep 'python' | awk '{ print $5 }' | xargs -n1 kill -9"

然后(这次只需要):

source ~/.bashrc

然后如果你跑

killgpuprocess

它将杀死 GPU 上的现有进程。


0
投票

留在这里作为参考。如果想要终止 GPU 上所有正在运行的进程,可以使用以下命令:

nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -n1 kill -9
© www.soinside.com 2019 - 2024. All rights reserved.