接受的答案对我不起作用,可能是因为
nvidia-smi
在不同版本/硬件上有不同的格式。
我正在使用更简洁的命令:
nvidia-smi | grep 'python' | awk '{ print $3 }' | xargs -n1 kill -9
您可以替换 awk 表达式中的
$3
以适合您的 nvidia-smi
输出。它是 PID 出现的第 n 列。
使用
nvidia-smi
或 top 命令查看正在运行的进程并终止命令:
sudo kill -9 PID
您可以在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')
我想当 nvidia-smi 显示占用 GPU 内存的进程时,问题已经得到解答。对我来说,尽管 nvidia-smi 没有显示任何进程,但 GPU 内存正在被使用,我想杀死它们。
这种情况下的方法是使用 fusion 命令来查找使用特定 GPU 设备的进程。就我而言,我想终止使用 GPU 设备 3 的所有进程。 这可以使用以下命令来完成:
sudo fuser -k /dev/nvidia3
您可以使用 -ki 以交互方式终止进程。
正如其他答案之一建议您可以使用:(将 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 上的现有进程。
留在这里作为参考。如果想要终止 GPU 上所有正在运行的进程,可以使用以下命令:
nvidia-smi --query-compute-apps=pid --format=csv,noheader | xargs -n1 kill -9