#!/usr/bin/perl
#**************************************************************
#- 작성자: jinyedge
#
#- 최종수정일: 200610131717
#
#- 설명:
# *Unix용 Cpu, Memory, Disk 사용량 측정 프로그램.
#
# *솔라리스 8과 Debian linux에서 테스트.
#
# *Cpu 사용량의 경우는 sar 명령어의 결과를 파싱하는 방식이므로
# 운영체제에 따라서 작동을 안 할 수도 있음. Linux의 경우 sar 명령어는
# sysstat 패키지를 설치한 후에 사용할 수 있음.
#
# *Memory와 Disk 사용량의 경우는 시스템 독립적인 Sys::MemInfo
# , Filesys::DfPortable 패키지를 사용.
#**************************************************************
use Sys::MemInfo qw(totalmem freemem);
use Filesys::DfPortable;
use strict;
#——————–
#Global.
#——————–
sub get_cpu_per{
open(my $fh, “sar 1 |”);
my @lines = <$fh>;
close($fh);
my $line = $lines[@lines – 1];
$line =~ s/^\s+|\s+$//g;
#Remove useless info.
my @list = split /\s+/, $line;
while($list[0] =~ /[:a-zA-Z]/){
shift @list;
}
#Remove wio, idle.
pop @list;
pop @list;
#Get cpu usage.
my $per = 0;
foreach(@list){
$per += $_;
}
return int($per);
}
#——————–
sub get_mem_per{
return int(100 * ((&totalmem – &freemem) / &totalmem));
}
#——————–
sub get_disk_per{
my $df = dfportable(“/”);
return $df->{per};
}
#——————–
#Main.
my $cpu_per = get_cpu_per();
my $mem_per = get_mem_per();
my $disk_per = get_disk_per();
printf “Cpu: %s%, Mem: %s%, Disk: %s%\n”, $cpu_per, $mem_per, $disk_per;