X-Git-Url: https://secure.softndesign.org/git/?a=blobdiff_plain;f=master%2Froot%2Fbin%2Fcpumon_light;fp=master%2Froot%2Fbin%2Fcpumon_light;h=af635c108028727331031ea671020e4a686ed009;hb=8d6c9e9b248e4f583ed40bbcb4d923d2d2048ed3;hp=e4509524d35fe195af0ecdf410e24349a274e48a;hpb=8c9776d240528a53077da065551307a8aa41d443;p=debian6500.git diff --git a/master/root/bin/cpumon_light b/master/root/bin/cpumon_light index e450952..af635c1 100755 --- a/master/root/bin/cpumon_light +++ b/master/root/bin/cpumon_light @@ -1,20 +1,36 @@ -#!/bin/sh +#!/usr/bin/perl -INSTALL_DIR=$(dirname $0) +use strict; -$INSTALL_DIR/monitor_proc -s /proc/stat -while true; do - sleep 1 - $INSTALL_DIR/monitor_proc /proc/stat | \ - awk ' -BEGIN { printf "cpu:" } -/cpu[0-9]/ { - idle=$5 - sum=0; for (i=2;i<=NF;i++) sum+=$(i) - load=(sum-idle)*100/sum - tot+=load - if (!not_first) not_first=1; else printf " +" - printf " % 5.1f%%", load +my @cpu_stat_t0 = proc_stat(); +sleep 1; +my @cpu_stat_t1 = proc_stat(); +my $total = 0; +for (my $cpu_i = 0; $cpu_i < (scalar @cpu_stat_t0); $cpu_i++) { + my @stat_t0 = split /\s+/, $cpu_stat_t0[$cpu_i]; + my @stat_t1 = split /\s+/, $cpu_stat_t1[$cpu_i]; + my ($t0_idle, $t1_idle) = ($stat_t0[3], $stat_t1[3]); + my ($t0_total, $t1_total) = (0, 0); + $t0_total += $_ foreach @stat_t0; + $t1_total += $_ foreach @stat_t1; + + my $load = ($t1_total - $t0_total == 0) ? 100: + int((100 * (($t1_total - $t0_total) - ($t1_idle - $t0_idle))/($t1_total - $t0_total)) + 0.5); + print " +" unless ($cpu_i == 0); + printf "% 5.1f%% ", $load; + $total += $load; +} +printf " = % 6.1f%%\n", $total; + +sub proc_stat() { + return grep {s/^cpu\d+\s//} read_file('/proc/stat'); } -END { printf " = % 6.1f%%\n", tot }' -done + +sub read_file($) { + my ($file) = @_; + open FILE, "<$file"; + my @content = ; + close FILE; + return @content; +} +