#!/bin/rc
#
# growth watch the growth of a file
#
# Does not cope with midnight properly but will recover on the
# next update.
#
if (~ $#* 0){
echo usage: $0 '<file>...'
exit 1
}
@{ while ( ~ 1 1 ){
for ( file in $* ){
if ( test -f $file )
echo `{ls -lu $file} `{date}
sleep 2
}
} } |
awk '
BEGIN {
num = 0;
SPM = 60; # sec per min
SPH = 60 * 60; # sec per hour
printf("%-15s %-12s %-12s %-9s %-9s %-6s\n",
"File", "sz", "Time", "BPS", "avBPS", "trend");
}
{
file=$10;
gsub("^.*/", "", file);
size = $6;
split($14, hm, ":");
time = hm[1] * SPH + hm[2] * SPM + hm[3];
if (num == 0){ # first time through
otime = time;
osize = size;
}
num++; # number of records
sum += rate; # overall data rate
delta = time - otime; # time since last measure
elap += delta; # total elapsed time
grow = size - osize; # growth in size
mean = sum / num; # mean growth rate
rate = (delta == 0)? 0: grow / delta; # find data rate
chg = (mean == 0)? 0: rate / mean; # change in data rate
printf("%-15s %-12d %-12s %-9.1f %-9.1f %6.1f%%\n",
file, size, hms(elap), rate, mean, chg * 100);
otime = time;
osize = size;
orate = rate;
}
function hms(t, h, m, s){
s = t;
h = int(s / SPH);
s -= h * SPH;
m = int(s / SPM);
s -= m * SPM;
return(sprintf("%02d:%02d:%02d", h, m, s));
}
'
|