我想从命令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的实时输出。 我甚至尝试了将xentop的迭代选项设置为1(
xentop -i 1
)仅运行一次,但是它仍然不起作用!
我该如何将xentop的输出作为“非”实时流传递给我的脚本?
xentop
,但我稍微使用了一下top
。 如果我运行top -b | ...(filtering)
,我也得不到任何东西,但我可以执行top -b > foo.txt
然后cat foo.txt | ...
并且那样可以工作(就像你观察到的xentop
)。 如果我运行top -b -n 1 | ...(filtering)
,那么它符合描述。 对于xentop
就是xentop -b -i 1 | ...
。 不确定这可能会给你留下什么,但请尝试xentop -b -i 1 | ...
,如果可以工作,那么您可以定期调用它以更新数据。 - lurkertop
和xentop
实际上是为控制台定期输出而设计的,不是为脚本输出到文件而设计的。如果你想将周期性的输出写入文件,为什么不从脚本中定期调用带有适当选项的ps
并将其过滤到文件中呢? - lurkersnmpwalk
从xentop
中提取出所有你想要的信息。 - Red Cricket