#!/usr/local/bin/perl/perl
$family_file = "/usr2/std/fpts/family-list";
$server_log = "/usr2/cuser/fparts/server/server-log";
$server_pid = "/usr2/cuser/fparts/server/server-pid";
while($_ = shift){
if(/-p/){
print "Family of Parts Usage Statistics\n\n";
# open the list of Families of Parts. Only families which are listed in this
# file will be available for searching
open(FAMILIES, $family_file) || die "Unable to open family list.\n";
# find the right family
while(<FAMILIES>)
{
# remove the trailing newline
chop;
next unless(/\w/);
# deal with continuation lines
while (s/\\$//) { $_ .= <FAMILIES>; }
# split lines into its parts
($directory, $partname) = split(':');
push(@directories, $directory);
@directories{$directory} = $partname;
}
# done with this file
close(FAMILIES);
print "Current families: ".($#directories + 1)."\n\n";
print "Current generated members: \n";
foreach (@directories)
{
chop($members = `grep -vc # $_/_tbl`);
$members -= 2;
$total_members += $members;
@generated = <$_-family/*>;
$total_generated += $#generated + 1;
($space = `du -s $_`) =~ s/ .*//;
$total_space += $space;
push(@families, sprintf("%-30s: %4d of %5d (%5d kbytes used.)\n",
$directories{$_}, $#generated + 1,
$members, $space));
}
print(join("", sort(@families)));
printf("\nTotal generated members : %4d of %5d (%3d%%)\n\n",
$total_generated, $total_members,
($total_generated/$total_members)*100);
printf("Space used: %0.3f mbytes.\n\n", $total_space / 1000);
} # if(/-p/)
elsif(/-s/)
{
print "Family of Parts Generation Server Statistics\n\n";
# remove the -s from the switch, for looking at older logs
s/-s//;
# open the list of Families of Parts. Only families which are listed in this
# file will be available for searching
open(SERVER, "$server_log$_") ||
die "Unable to open server log $server_log$_\n";
(@server_stats) = <SERVER>;
close(SERVER);
foreach (@server_stats)
{
s/\.*\s*$//;
($process, $time, $report) = /(\d*:\d\d\d):(\d\d:\d\d).*: (.*)/;
$process =~ s/(\d*):(\d*)/Day $2, Process $1/;
$_ = $report;
if((!/ok$/) && ((/connect/) || (/fpts/) || (/Generation/) ||
(/Server/) || (/Logfile/)))
{
$process_info{$process} .= "$report at $time\n";
}
}
foreach $process (sort(keys(%process_info)))
{
print "$process:\n$process_info{$process}";
}
} # elsif(/-s/)
elsif(/-r/)
{
# keep seven server logs (one week if reset nightly)
unlink("$server_log.7");
rename("$server_log.6", "$server_log.7");
rename("$server_log.5", "$server_log.6");
rename("$server_log.4", "$server_log.6");
rename("$server_log.3", "$server_log.4");
rename("$server_log.2", "$server_log.3");
rename("$server_log.1", "$server_log.2");
system("cp $server_log $server_log.1;".
"kill -HUP `cat $server_pid`");
} # elsif(/-r/)
else {
print "Usage: $0 [-p] [-s[.n]] [-r]\n".
" -p usage statistics\n".
" -s server statistics [.n] log number n (1-7)\n".
" -r archive and reset server log\n";
exit 1;
} # else
} # while($_ = shift);
exit 0;
Last Modified: Wed Aug 28 14:41:29 EDT 1996
Gregory Marr <gregm@alum.wpi.edu>