终端命令以简单的方式在单个屏幕上显示内存使用情况、温度和 GPU 使用情况的摘要

终端命令以简单的方式在单个屏幕上显示内存使用情况、温度和 GPU 使用情况的摘要

是否有一个终端命令可以以简单的方式在单个屏幕上显示内存使用情况、温度度数和 GPU 使用情况的摘要?

我希望终端以摘要的方式提供内存使用情况(不是交换等)、GPU 使用情况(百分比)和温度程度的信息 - CPU 有多热?

现在,我必须使用三个不同的终端命令:

watch free -m    # For Memory use
watch sensors    # For Temperature
watch ndivia-smi # For GPU use

有没有办法在单个屏幕上显示这些信息?这些命令会产生大量信息,但有些人可能并不需要它们。

第一行可能显示内存使用情况。第二行可能显示 GPU 使用情况。第三行可能显示温度。

我想要free -m“可用”中的温度。我想要nvidia-smi“Volatile GPU-Util”中的温度,以及sensors所有温度的百分比,但不显示其限制(从那个到那个),例如

Available memory    5500000          

Volatile GPU-Util  20% 

CPUtemp1           40oC
Fantemp1           41oC
FanTemp2           42oC
etc... 

那可能吗?

示例输出:

free -m输出

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7815        1938        3548         188        2328        5391
Swap:          2047          57        1990

nvidia-smi输出

$ nvidia-smi
Fri Jul 31 18:35:45 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.138                Driver Version: 390.138                   |
|-------------------------------+----------------------+----------------------+
| 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 GT 1030     Off  | 00000000:01:00.0  On |                  N/A |
| 32%   44C    P8    N/A /  30W |    220MiB /  1998MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0      1770      G   /usr/lib/xorg/Xorg                            82MiB |
    |    0      8182      G   /usr/bin/krunner                               6MiB |
    |    0      8184      G   /usr/bin/plasmashell                          55MiB |
    |    0     26370      G   ...AAAAAAAAAAAACAAAAAAAAAA= --shared-files    74MiB |
    +-----------------------------------------------------------------------------+

sensors输出

$ sensors
it8620-isa-0a30
Adapter: ISA adapter
in0:          +0.01 V  (min =  +0.00 V, max =  +3.06 V)  ALARM
in1:          +2.05 V  (min =  +0.00 V, max =  +3.06 V)
in2:          +2.00 V  (min =  +0.00 V, max =  +3.06 V)
in3:          +2.02 V  (min =  +0.00 V, max =  +3.06 V)
in4:          +0.01 V  (min =  +0.00 V, max =  +3.06 V)
in5:          +1.74 V  (min =  +0.00 V, max =  +3.06 V)
in6:          +1.50 V  (min =  +0.00 V, max =  +3.06 V)
3VSB:         +3.38 V  (min =  +0.00 V, max =  +6.12 V)
Vbat:         +3.05 V  
fan1:        2986 RPM  (min =    0 RPM)
fan2:           0 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
temp1:        +47.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:       -128.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = disabled
temp3:        +35.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = Intel PECI
temp4:        +45.0°C  
temp5:        +42.0°C  
temp6:        +45.0°C  
intrusion0:  ALARM

acpitz-virtual-0
Adapter: Virtual device
temp1:        +27.8°C  (crit = +97.0°C)
temp2:        +29.8°C  (crit = +97.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +45.0°C  (high = +86.0°C, crit = +92.0°C)
Core 0:        +43.0°C  (high = +86.0°C, crit = +92.0°C)
Core 1:        +44.0°C  (high = +86.0°C, crit = +92.0°C)
Core 2:        +42.0°C  (high = +86.0°C, crit = +92.0°C)
Core 3:        +40.0°C  (high = +86.0°C, crit = +92.0°C)

答案1

您可以使用各种命令行实用程序(例如)轻松地从长输出中提取感兴趣的特定部分awk

您只想显示“可用的' 从 的输出中提取内存free -m。请注意,此数字作为 输出的第 2 行中的第 7 个字符串出现free -m。因此,您可以使用以下命令提取此数字

free -m | awk '{if (NR == 2) {print $7}}'

要“ watch”输出,您可以使用以下内容

watch 'free -m | awk '\''{if (NR == 2) {print $7}}'\'

类似地,您似乎想从命令输出中提取第 9 行中的第 2 个字符串nvidia-smi32%根据您添加到问题中的输出)。因此,您可以通过以下命令提取此值

nvidia-smi | awk '{if (NR == 9) {print $2}}'

并且watch使用

watch 'nvidia-smi | awk '\''{if (NR == 9) {print $2}}'\'

从输出中,sensors我相信您正尝试从第 15 行到第 20 行(报告temp1temp6)中提取第二个字符串。因此,您可以使用

sensors | awk '{if (NR>=15&&NR<=20) {print $2}}'

watch

watch 'sensors | awk '\''{if (NR>=15&&NR<=20) {print $2}}'\'

watch同时执行这三项操作,您可以使用以下命令

watch 'free -m | awk '\''{if (NR == 2) {print $7}}'\''; nvidia-smi | awk '\''{if (NR == 9) {print $2}}'\''; sensors | awk '\''{if (NR>=15&&NR<=20) {print $2}}'\'

相关内容