获取solaris的CPU、内存负载

获取solaris的CPU、内存负载

各位好。

做周报、月报时,每次都是手动统计CPU负载、内存负载等,想用脚本自动获得负载情况,然后进行画图。

但用vmstat(solaris系统)时,感觉CPU负载不正常,如下:
use strict;

chomp (my $date=`date +%Y%m%d`);
my $vmstat=`vmstat`;
if ($vmstat =~ /\s(\d{1,3})$/) {
        my $load=100-$1;
        print "$date $load\n";
}

执行结果:
bash[root@radius3: /home1/gaochong/scripts]=>./load
20080312 54

这和 vmstat interval的结果相差还是很大的,如下:
bash[root@radius3: /home1/gaochong/scripts]=>vmstat 5
procs     memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr s0 s1 s6 --   in   sy   cs us sy id
0 0 0 978816 159752 164 248 295 329 476 0 1 2 3  0  0 4294967289 154 514 34 20 46
0 0 0 1294512 272016 15 96  0  4  4  0  0  0  1  0  0  419  271   44  0  1 98
0 0 0 1294512 272016 0   0  0  0  0  0  0  0  0  0  0  418   56   40  0  0 100
0 0 0 1294512 272016 0   0  0  0  0  0  0  0  0  0  0  416   39   35  0  0 100
^C

但在perl脚本中,如何用 vmstat 5 呢? 因为要 ^C ,这个如何做到?
看了 perl 中 管理系统进程,还没弄出来。
谢谢各位!
错了。
获取CPU利用率应该用 sar

bash[root@radius4:/]=>sar -u 5 3

SunOS radius4 5.8 Generic_117350-07 sun4u    03/12/08

15:19:02    %usr    %sys    %wio   %idle
15:19:07       0       0       0     100
15:19:12       0       2       0      97
15:19:17       0       0       0     100

Average        0       1       0      99
bash[root@radius4:/]=>




#!/usr/bin/perl -w

use strict;

open LOG,">> /home1/gaochong/log/load.log" or die "$!";
chomp (my $date=`date +%Y%m%d`);
my $vmstat=`sar -u 5 3`;
if ($vmstat =~ /Average\s+\d+\s+\d+\s+\d+\s+(\d+)$/) {
        my $load=100-$1;
        print LOG "$date $load\n";
}