检索CPU使用百分比

时间:2018-06-18 12:34:09

标签: linux awk grep command cpu-usage

我想检索百分比处理器使用率,但没有其他命令显示大量数字。有一个解决方案使用'grep'或'awk'或类似的东西。

~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0 1447984 190232 146508 4983236  0    0     0    10    0    0  2  1 97  0

我使用了vmstat命令,我只想在cpu冒号中使用'sy'号。

top command output :
    [m20176 libvirt-  20   0 4368m 4,0g 3028 S  12,0 25,3  24695:44 kvm               (B[m[39;49m

(B[m25320 libvirt-  20   0 3520m 3,0g 3056 S   2,7 19,2  21786:15 kvm               (B[m[39;49m

(B[m    1 root      20   0 10656  624  596 S   0,0  0,0   5:46.26 init              (B[m[39;49m
(B[m    2 root      20   0     0    0    0 S   0,0  0,0   0:00.12 kthreadd          (B[m[39;49m
(B[m    3 root      20   0     0    0    0 S   0,0  0,0 476:10.20 ksoftirqd/0       (B[m[39;49m
(B[m    6 root      rt   0     0    0    0 S   0,0  0,0   0:08.16 migration/0       (B[m[39;49m
(B[m    7 root      rt   0     0    0    0 S   0,0  0,0   2:03.06 watchdog/0        (B[m[39;49m
(B[m    8 root      rt   0     0    0    0 S   0,0  0,0   0:04.30 migration/1       (B[m[39;49m
(B[m   10 root      20   0     0    0    0 S   0,0  0,0   0:38.83 ksoftirqd/1       (B[m[39;49m
(B[m   12 root      rt   0     0    0    0 S   0,0  0,0   1:43.93 watchdog/1        (B[m[39;49m
(B[m   13 root      rt   0     0    0    0 S   0,0  0,0   0:03.41 migration/2       (B[m[39;49m
(B[m   15 root      20   0     0    0    0 S   0,0  0,0   2:42.22 ksoftirqd/2       (B[m[39;49m
(B[m   16 root      rt   0     0    0    0 S   0,0  0,0   1:49.23 watchdog/2        (B[m[39;49m
(B[m   17 root      rt   0     0    0    0 S   0,0  0,0   0:04.42 migration/3       (B[m[39;49m
(B[m   19 root      20   0     0    0    0 S   0,0  0,0 408:06.08 ksoftirqd/3       (B[m[39;49m

此处显示每个进程的进程使用(仅一部分)。我找到了这个命令:

`top -b -d1 -n1|grep -i "Cpu(s)"|head -c21|cut -d ' ' -f3|cut -d '%' -f1`

here。但这是启动时的CPU使用率,而非实时使用情况。

1 个答案:

答案 0 :(得分:2)

一个简单的awk可以帮到你(考虑到你只想打印sy列的数量)。

vmstat 1 10 | awk 'FNR>1{print $(NF-3)}'

注意: 我已使用vmstat 1 10在服务器上执行10次vmstat命令,然后我正在打印$(NF-3)值是最后的第4个值。