#!/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;

Leave a Reply

Your email address will not be published. Required fields are marked *