#!/bin/bash
# Author: Lubomir Host 'rajo' <host8@kepler.fmph.uniba.sk>
# $Id: loadwatch.sh,v 1.1.1.1 2002/02/05 15:09:26 host8 Exp $
# Security options !!!
umask 077
##############################
# User's setup
LOG="$HOME/.loadwatch/`date '+%Y%m%d'`"
##############################
# Functions
#
plot() {
cat <<EOF | gnuplot -
set terminal postscript color;
set output '$LOG.ps'
set xrange [0:1440]
#set noborder;
set nozeroaxis;
set noxtics;
set noytics
set xlabel 'time';
set ylabel 'load';
# set nokey;
set size square;
plot [] \
'$LOG' using (\$8*60 + \$9):11 title 'load_average 1 min' with lines 1, \
'$LOG' using (\$8*60 + \$9):12 title 'load_average 5 min' with lines 2, \
'$LOG' using (\$8*60 + \$9):13 title 'load_average 15 min' with lines 3
EOF
}
view() {
plot
gv $LOG.ps
}
log() {
# datum :
# %Y rok (1970...)
# %m měsíc (01..12)
# %d den v měsíci (01..31)
# %j den v roce (001..366)
# %W číslo týdne s pondělím jako prvním dnem v týdnu (00..53)
# %w den v týdnu (0..6); 0 znamená neděle
# %s počet sekund od 1. ledna 1970 00:00:00 UTC
# %H hodina (00..23)
# %M minuta (00..59)
# %S sekund (00..61)
# uptime :
# 6:12pm up 20:41, 5 users, load average: 1.29, 1.29, 1.33
# last 1 min, last 5 mins., last 15 mins.
UPTIME=`uptime| \
sed 's/^.*load average://g;' | \
awk '{print $1 " " $2 " " $3 }'| \
sed 's/,//g; s/:/ /g;' `
date "+%Y %m %d %j %W %w %s %H %M %S $UPTIME" >> $LOG
}
previous() {
if [ $1 = "" ] ; then
LOG="$HOME/crontab/logs/`date --date '1 days ago' '+%Y%m%d'`"
else
LOG="$HOME/crontab/logs/`date --date \"$1 days ago\" '+%Y%m%d'`"
fi
plot
}
# Command line parsing
# See how we were called.
case "$1" in
log)
log
;;
view)
view
;;
plot)
plot
;;
previous)
previous $2
;;
*)
echo "Usage: $0 {log|plot|view|previous [days_ago]}"
exit 1
esac
# Modeline for ViM
# vim600: fdm=marker fdl=0
Platon Group <platon@platon.sk> http://platon.sk/
|