【问题标题】:How to get iostat second sample如何获取 iostat 第二个样本
【发布时间】:2017-04-28 22:32:03
【问题描述】:

iostat -x 不显示实际值。如果您运行iostat -x 1 并查看每秒的值,这很明显。当我运行iostat -x 1 2 时,我认为我可以通过抓取确切的行然后获取值来获得我想要的值。

iostat -x 1 2 | awk '{gsub(/,/,"."); if (NR==15) printf ("%s,%s,%s,", $1, $3 ,$4); else if (NR == 18) printf ("%s,", $14);}'

从第 15 行给我 %user、%system、%iowait,从第 18 行给我 %sda。

不幸的是,我无法做到这一点,因为我有不止一台具有不同磁盘的机器。当我运行iostat -x 时,sda 可能在第 18 行、第 21 行或另一行。

如何运行iostat -x 并仅获得第二个样本?或者我怎样才能得到我想要的关于这条线的值?

我想到了iostat -x 1 2 | awk '/^sda/ {print $14}',然后只得到第二个值,但如果我按照这种方法,我需要 8 秒才能得到我想要的所有值。

iostat -x 1 2的输出

Linux 3.10.0-327.28.3.el7.x86_64 (sth)  13/12/2016  _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,70    0,00    0,23    0,09    0,00   98,98

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme0n1           0,00     0,00    0,00    0,00     0,03     0,00    38,29     0,00    0,13    0,13    0,00   0,02   0,00
sda               0,01     0,18    0,23    7,52    38,37  3132,67   819,15     1,26  162,49  219,88  160,76   3,74   2,89
sdb               0,00     0,00    0,62    0,00    78,93     0,00   255,56     0,00    0,40    0,40    0,00   0,24   0,01
dm-0              0,00     0,00    1,02    2,10    21,16   156,62   113,89     0,11   34,80    4,22   49,58   2,13   0,66
dm-1              0,00     0,00    0,00    0,00     0,01     0,00    59,16     0,00    0,54    0,36    3,15   0,42   0,00
dm-2              0,00     0,00    0,01    0,01     0,13     0,76    84,61     0,00  177,30    0,58  287,55  28,81   0,06

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,03    0,00    0,03    0,00    0,00   99,94

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme0n1           0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
sda               0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
sdb               0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-0              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-1              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00
dm-2              0,00     0,00    0,00    0,00     0,00     0,00     0,00     0,00    0,00    0,00    0,00   0,00   0,00

【问题讨论】:

    标签: linux performance awk sed iostat


    【解决方案1】:

    这将为您提供标题和值的第二个实例,您可以进一步限制字段并根据需要跳过标题

    $ iostat -x 1 2 | awk '/^avg-cpu/  {c++; a=4} 
                           c==2 && a && a--; 
                           c==2 && /^sdb/'
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               1.31    0.00    0.22    0.00    0.00   98.47
    
    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    sdb              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
    

    这个,没有标题,只需选择要打印的字段(而不是 $0)。

    $ iostat -x 1 2 | awk '/^avg-cpu/        {c++; a=2} 
                           c==2 && a && !--a {print $0} 
                           c==2 && /^sdb/    {print $0}'
    
               1.78    0.00    0.78    0.03    0.00   97.41
    sdb              0.00     0.00  0.00 831.00     0.00  6648.00     8.00     0.72    0.87   0.01   0.60
    

    【讨论】:

    • 我在做iostat -x -d 1 2,那我应该如何获取值
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2015-01-08
    相关资源
    最近更新 更多