[英]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.