簡體   English   中英

解析vmstat輸出的有效方法

[英]efficient way to parse vmstat output

我正在嘗試有效地解析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

不幸的是,在不同的Linux發行版和hp-ux上,vmstat輸出可能會有所不同,列的長度也可能會有所不同,並且可以以其他順序顯示。

我試圖寫一些不錯的awk oneliner,但最終以python解決方案告終:

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

您是否知道解析上述輸出以獲取所需列名的數字值的更好方法?

使用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上進行了測試。

$ vmstat | python -c 'import sys; print sys.stdin.readlines()[-1].split()[-2]'
95

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM