- 论坛徽章:
- 0
|
informix的一个监控命令onstat -g glo 输出如下:
- $ onstat -g glo
- Informix Dynamic Server Version 7.31.FD1 -- On-Line -- Up 18 days 22:14:12 -- 3157168 Kbytes
- MT global info:
- sessions threads vps lngspins
- 52 201 13 2
- sched calls thread switches yield 0 yield n yield forever
- total: 3611332061 1735679186 2009113064 62366160 731801533
- per sec: 518 0 518 0 0
- Virtual processor summary:
- class vps usercpu syscpu total
- cpu 3 534593.39 19518.69 554112.08
- aio 2 32.76 76.53 109.29
- lio 1 12.51 34.89 47.40
- pio 1 12.51 35.15 47.66
- adm 1 67.20 121.64 188.84
- soc 3 2224.96 28468.82 30693.78
- msc 1 32.63 55.58 88.21
- adt 1 28.04 61.48 89.52
- total 13 537004.00 48372.78 585376.78
- ...未完
复制代码
我想相隔一段时间执行两次onstat -g glo,将两次数据相减,观察各种VP的利用率。
于是利用awk写了脚本实现,由于第一次实践,希望各位大侠指点一下,看看怎样做更好。
谢谢!
- #!/usr/bin/sh
- if [ $# -ne 1 ]
- then
- echo " Usage: onstat_glo INTERVAL "
- exit
- fi
- INV=$1; export INV
- OUT1=/tmp/onstat_glo.out1
- OUT2=/tmp/onstat_glo.out2
- export OUT1 OUT2
- onstat -g glo > $OUT1
- sleep $INV
- onstat -g glo > $OUT2
- awk ' \
- BEGIN {
- while( getline < ENVIRON["OUT1"] >0 ) {
- if ($1 == "cpu") { cpu1 = $5 }
- if ($1 == "aio") { aio1 = $5 }
- if ($1 == "lio") { lio1 = $5 }
- if ($1 == "pio") { pio1 = $5 }
- if ($1 == "adm") { adm1 = $5 }
- if ($1 == "soc") { soc1 = $5 }
- if ($1 == "msc") { msc1 = $5 }
- if ($1 == "adt") { adt1 = $5 }
- }
- while( getline < ENVIRON["OUT2"] >0 ) {
- if ($1 == "cpu") { cpu2 = $5 }
- if ($1 == "aio") { aio2 = $5 }
- if ($1 == "lio") { lio2 = $5 }
- if ($1 == "pio") { pio2 = $5 }
- if ($1 == "adm") { adm2 = $5 }
- if ($1 == "soc") { soc2 = $5 }
- if ($1 == "msc") { msc2 = $5 }
- if ($1 == "adt") { adt2 = $5 }
- }
- }
- END {
- printf (" cpu vp : %6.2f %\n", (cpu2-cpu1)/inv*100 )
- printf (" aio vp : %6.2f %\n", (aio2-aio1)/inv*100 )
- printf (" lio vp : %6.2f %\n", (lio2-lio1)/inv*100 )
- printf (" pio vp : %6.2f %\n", (pio2-pio1)/inv*100 )
- printf (" adm vp : %6.2f %\n", (adm2-adm1)/inv*100 )
- printf (" soc vp : %6.2f %\n", (soc2-soc1)/inv*100 )
- printf (" msc vp : %6.2f %\n", (msc2-msc1)/inv*100 )
- printf (" adt vp : %6.2f %\n", (adt2-adt1)/inv*100 )
- }
- ' inv=$INV /dev/null
- rm $OUT1 $OUT2
复制代码 [/code] |
|