2

vmstatの出力を効率的に解析しようとしています。できればawkまたはsedで、Linuxとhp-uxの両方で機能するはずです。たとえば、次の出力からCPUアイドル%(この場合は「92」)をカットしたいと思います。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
11  0 385372 101696  61704 650716    0    1     5     9    6   12  5  2 92  0

残念ながら、vmstatの出力はLinuxディストリビューションやhp-uxによって異なる可能性があります。また、列の長さが異なる可能性があり、他の順序で表示される可能性もあります。

私はいくつかの素敵なawkonelinerを書き込もうとしましたが、最終的にはpythonソリューションで終わりました:

$ vmstat | python -c 'import sys; print dict(zip(*map(str.split, sys.stdin)[-2:])).get("id")'
92

上記の出力を解析して、目的の列名の数値を取得するためのより良い方法を知っていますか?

4

2 に答える 2

4

awkを使用すると、次のことができます。

vmstat | awk '(NR==2){for(i=1;i<=NF;i++)if($i=="id"){getline; print $i}}'

これは、Linux、HP-UX、またはその他の標準的なUNIXシステムで「id」列の値を取得する必要があります。

Linux、HP-UX、およびSolarisでテスト済み。

于 2011-09-08T10:39:06.873 に答える
0
$ vmstat | python -c 'import sys; print sys.stdin.readlines()[-1].split()[-2]'
95
于 2015-07-02T21:09:21.723 に答える