如何在 bash 中使用解析 nvidia-smi 输出并将解析结果用作其他命令的输入?

xxx*_*222 5 python bash

这是我的命令的输出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)

Max*_*xim 7

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 上运行的应用程序相关的查询的更多信息,请参阅联机帮助页。


Jea*_*bre 2

使用 过滤命令输出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)