Linux
殺死由命令列過濾的 sudo fuser 顯示的程序
使用以下行,我已經能夠看到使用 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
如何殺死 COMMAND 列中提到的所有 python 程序。但到目前為止,我必須為每個 PID 手動完成,
sudo kill -9 <pid>
如果它們很多,這並不容易。有沒有辦法自動化並使其更快?就像只寫一個命令並殺死所有在 COMMAND 列中有 pyton 的 PID?
編輯
這是一個單行程序,應該使用以下命令殺死所有 python 程序
/dev/nvidia*
:sudo fuser -v /dev/nvidia* 2>&1 | grep python | grep -o -E " [0-9]+ " | xargs kill
由於輸出結果
2>&1
的方式,重定向是必要的。將選擇所有包含 的行,然後將提取 PID 並將其全部殺死。fuser``grep python``python``grep -o -E " [0-9]+ "``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 更快。