使用下面的行,我已经能够看到使用 GPU 的进程,其中一些进程在 COMMAND 列下提到了 python。
sudo fuser -v /dev/nvidia*
打印:
USER PID ACCESS COMMAND
/dev/nvidia0: root 1197 F...m Xorg
alireza 1451 F...m gnome-shell
alireza 5527 F...m python
alireza 5567 F.... python
alireza 5568 F.... python
如何杀死命令列中提到的所有 python 进程。但到目前为止,我必须为每个 PID 手动执行此操作,sudo kill -9 <pid>
如果有很多 PID,这并不容易。
有没有一种方法可以使其自动化并使其更快?就像只写一个命令并杀死所有在 COMMAND 列中有 pyton 的 PID?
答案1
编辑
这是一个单行代码,应该使用以下命令杀死所有 python 进程/dev/nvidia*
:
sudo fuser -v /dev/nvidia* 2>&1 | grep python | grep -o -E " [0-9]+ " | xargs kill
2>&1
由于fuser
输出结果的方式,重定向是必要的。grep python
将选择包含 的所有行python
,然后grep -o -E " [0-9]+ "
提取 PID 并xargs kill
杀死所有行。
请先运行sudo fuser -v /dev/nvidia* 2>&1 | grep python
以验证是否没有错误地选择不需要的进程。
原答案
以下命令将显示使用硬件文件的进程/dev/nvidia*
,并提示您是否要一一杀死它们:
$ sudo fuser -ikv /dev/nvidia*
USER PID ACCESS COMMAND
/dev/nvidia0: root 1197 F...m Xorg
alireza 1451 F...m gnome-shell
alireza 5527 F...m python
alireza 5567 F.... python
alireza 5568 F.... python
Kill process 1191 ? (y/N) N
Kill process 1451 ? (y/N) N
Kill process 5527 ? (y/N) y
...
这不是一个可以杀死所有 python 命令的单行命令(应该可以使用fuser | grep | cut | kill
),但它比手动输入每个 PID 更快。