这是我的命令的输出nvidia-smi,我想解析它的输出并杀死在 GPU 上运行的所有 python 进程。我已经知道如何使用我编写的以下脚本杀死所有 python 进程。
kall () {
pgrep $1 | xargs kill -9
}
Run Code Online (Sandbox Code Playgroud)
现在我想杀死所有使用 GPU 的进程(获取 PID 号),所以我想解析 nvidia-smi 输出。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.27 Driver Version: 367.27 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1070 Off | 0000:01:00.0 On | N/A |
| 0% 46C P2 40W / 166W | 4902MiB / 8112MiB | 1% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 917 G /usr/lib/xorg/Xorg 209MiB |
| 0 1683 G compiz 159MiB |
| 0 3780 G ...UI2016Q2,UsePasswordSeparatedSigninFlow<P 130MiB |
| 0 25962 C python 2199MiB |
| 0 26103 C python 2201MiB |
+-----------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
nvidia-smi您可以直接从实用程序获取所需的输出
$ nvidia-smi --query-compute-apps=pid --format=csv,noheader
917
1683
3780
25962
26103
Run Code Online (Sandbox Code Playgroud)
nvidia-smi --help-query-compute-apps有关与在 GPU 上运行的应用程序相关的查询的更多信息,请参阅联机帮助页。
使用 过滤命令输出awk。如果第 4 个字段是“G”,则打印 PID(第 3 个字段)
nvidia-smi | awk '$4=="G" {print $3}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)
编辑:稍微误解了你想要的。如果你想终止你的工具列表所做的Python进程(正如你自己纠正的那样):
nvidia-smi | awk '$5=="python" {print $3}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)