我想从命令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的输出作为“不”实时输出到我的脚本?
答案 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