如何在Bash脚本中从命令的实时输出中提取一些字段

时间:2013-09-07 12:36:48

标签: bash xen

我想从命令xentop的输出中提取一些字段。这就像top命令;提供对cpu使用情况,内存使用情况......的实时了解。 如果我在批处理模式下运行此命令,我将在文件中看到它的输出:

      NAME  STATE   CPU(sec) CPU(%)     MEM(k) MEM(%)  MAXMEM(k) MAXMEM(%) VCPUS NETS NETTX(k) NETRX(k) VBDS   VBD_OO   VBD_RD   VBD_WR  VBD_RSECT  VBD_WSECT SSID
  Domain-0 -----r      13700   33.0    7127040   85.9   no limit       n/a     8    0        0        0    0        0        0        0          0          0    0
     fed18 -----r        738  190.6    1052640   12.7    1052672      12.7     3    1   259919     8265    1        0    82432    22750    2740966    1071672    0

并运行此

cat file| tr '\r' '\n' | sed 's/[0-9][;][0-9][0-9][a-Z]/ /g' | col -bx | awk '{print $1,$4,$6}'

在这个文件上给了我想要的东西

NAME CPU(%) MEM(%)
Domain-0 33.0 85.9
fed18 190.6 12.7

但我的脚本不适用于xentop的实时输出。我甚至尝试通过将itteration选项设置为1(xentop -i 1)来运行xentop一次,但它不起作用! 如何将xentop的输出作为“不”实时输出到我的脚本?

2 个答案:

答案 0 :(得分:0)

它可能没有向标准输出流发送任何输出。有几种方法可以在不使用标准输出的情况下将输出发送到屏幕。快速谷歌搜索没有提供有关它如何在内部工作的大量信息。

答案 1 :(得分:0)

我在xenserver 7.0上使用xentop 1.0版,如:

[root@xen] xentop -V
xentop 1.0

[root@xen] cat /etc/centos-release
XenServer release 7.0.0-125380c (xenenterprise)

如果您想保存xentop输出,可以使用' -b' (批处理模式)和' -i' (退出前的迭代次数)选项:

[root@xen] xentop -b -i 1
NAME  STATE   CPU(sec) CPU(%)     MEM(k) MEM(%)  MAXMEM(k) MAXMEM(%) VCPUS NETS NETTX(k) NETRX(k) VBDS   VBD_OO   VBD_RD   VBD_WR  VBD_RSECT  VBD_WSECT SSID
Domain-0 -----r     132130    0.0    4194304    1.6    4194304       1.6    16    0        0        0    0        0        0        0          0          0    0
MY_VM --b---       5652    0.0   16777208    6.3   16915456       6.3     4    0        0        0    1        -        -        -          -          -    0 

[root@xen] xentop -b -i 1 > output.txt
[root@xen] cat output.txt
NAME  STATE   CPU(sec) CPU(%)     MEM(k) MEM(%)  MAXMEM(k) MAXMEM(%) VCPUS NETS NETTX(k) NETRX(k) VBDS   VBD_OO   VBD_RD   VBD_WR  VBD_RSECT  VBD_WSECT SSID
Domain-0 -----r     132130    0.0    4194304    1.6    4194304       1.6    16    0        0        0    0        0        0        0          0          0    0
MY_VM --b---       5652    0.0   16777208    6.3   16915456       6.3     4    0        0        0    1        -        -        -          -          -    0