mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
Use persistent CPU usage block
This commit is contained in:
parent
3890246f83
commit
74b9523476
@ -62,7 +62,7 @@ signal=5
|
|||||||
|
|
||||||
[cpu_usage]
|
[cpu_usage]
|
||||||
label=
|
label=
|
||||||
interval=2
|
interval=persist
|
||||||
|
|
||||||
[separator]
|
[separator]
|
||||||
|
|
||||||
|
@ -1,53 +1,31 @@
|
|||||||
#!/usr/bin/perl
|
#!/bin/bash
|
||||||
#
|
# by Paul Colby (http://colby.id.au), no rights reserved ;)
|
||||||
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
|
# https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated
|
||||||
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
|
|
||||||
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
|
|
||||||
#
|
|
||||||
# Licensed under the terms of the GNU GPL v3, or any later version.
|
|
||||||
|
|
||||||
use strict;
|
PREV_TOTAL=0
|
||||||
use warnings;
|
PREV_IDLE=0
|
||||||
use utf8;
|
|
||||||
use Getopt::Long;
|
|
||||||
|
|
||||||
# default values
|
while true; do
|
||||||
my $t_warn = 50;
|
# Get the total CPU statistics, discarding the 'cpu ' prefix.
|
||||||
my $t_crit = 80;
|
CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
|
||||||
my $cpu_usage = -1;
|
IDLE=${CPU[3]} # Just the idle CPU time.
|
||||||
|
|
||||||
sub help {
|
# Calculate the total CPU time.
|
||||||
print "Usage: cpu_usage [-w <warning>] [-c <critical>]\n";
|
TOTAL=0
|
||||||
print "-w <percent>: warning threshold to become yellow\n";
|
for VALUE in "${CPU[@]}"; do
|
||||||
print "-c <percent>: critical threshold to become red\n";
|
let "TOTAL=$TOTAL+$VALUE"
|
||||||
exit 0;
|
done
|
||||||
}
|
|
||||||
|
|
||||||
GetOptions("help|h" => \&help,
|
# Calculate the CPU usage since we last checked.
|
||||||
"w=i" => \$t_warn,
|
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
|
||||||
"c=i" => \$t_crit);
|
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
|
||||||
|
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
|
||||||
|
echo -e "$DIFF_USAGE%\n$DIFF_USAGE%"
|
||||||
|
|
||||||
# Get CPU usage
|
# Remember the total and idle CPU times for the next check.
|
||||||
$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is
|
PREV_TOTAL="$TOTAL"
|
||||||
open (MPSTAT, 'mpstat 1 1 |') or die 'Cannot run mpstat';
|
PREV_IDLE="$IDLE"
|
||||||
while (<MPSTAT>) {
|
|
||||||
if (/^.*\s+(\d+\.\d+)\s+$/) {
|
|
||||||
$cpu_usage = 100 - $1; # 100% - %idle
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(MPSTAT);
|
|
||||||
|
|
||||||
#$cpu_usage eq -1 and die 'Can\'t find CPU information';
|
# Wait before checking again.
|
||||||
|
sleep 1
|
||||||
# Print short_text, full_text
|
done
|
||||||
printf "%.0f%%\n"x2, $cpu_usage;
|
|
||||||
|
|
||||||
# Print color, if needed
|
|
||||||
if ($cpu_usage >= $t_crit) {
|
|
||||||
print "#FF0000\n";
|
|
||||||
} elsif ($cpu_usage >= $t_warn) {
|
|
||||||
print "#FFCB00\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
Loading…
Reference in New Issue
Block a user