--- loncom/loncron 2001/09/04 17:58:44 1.23 +++ loncom/loncron 2002/07/27 19:06:41 1.32 @@ -13,16 +13,18 @@ # 12/23 Gerd Kortemeyer # YEAR=2001 # 1/10/2001, 2/12/, 2/26, 3/15, 04/11, 04/21,8/27 Scott Harrison +# 09/04,09/06,11/26 Gerd Kortemeyer +# YEAR=2002 +# 5/11/2002 Scott Harrison + +$|=1; + +use lib '/home/httpd/lib/perl/'; +use LONCAPA::Configuration; use IO::File; use IO::Socket; -my $qflag=0; -if (@ARGV) { - my $arg=shift @ARGV; - $qflag=1 if $arg eq 'quick'; -} - # -------------------------------------------------- Non-critical communication sub reply { my ($cmd,$server)=@_; @@ -53,19 +55,13 @@ ENDERROUT # ================================================================ Main Program -# ------------------------------------------------------------ Read access.conf -{ - my $config=IO::File->new("/etc/httpd/conf/access.conf"); - - while (my $configline=<$config>) { - if ($configline =~ /PerlSetVar/) { - my ($dummy,$varname,$varvalue)=split(/\s+/,$configline); - $perlvar{$varname}=$varvalue; - } - } - delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed - delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed -} +# --------------------------------- Read loncapa_apache.conf and loncapa.conf +my $perlvarref=LONCAPA::Configuration::read_conf('loncapa_apache.conf', + 'loncapa.conf'); +%perlvar=%{$perlvarref}; +undef $perlvarref; +delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed +delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed # --------------------------------------- Make sure that LON-CAPA is configured # I only test for one thing here (lonHostID). This is just a safeguard. @@ -97,14 +93,21 @@ if ($wwwid!=$<) { my $config=IO::File->new("$perlvar{'lonTabDir'}/hosts.tab"); while (my $configline=<$config>) { - my ($id,$domain,$role,$name,$ip)=split(/:/,$configline); - $hostname{$id}=$name; - $hostdom{$id}=$domain; - $hostrole{$id}=$role; - $hostip{$id}=$ip; - if (($role eq 'library') && ($id ne $perlvar{'lonHostID'})) { - $libserv{$id}=$name; - } + my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline); + if ($id && $domain && $role && $name && $ip) { + $hostname{$id}=$name; + $hostdom{$id}=$domain; + $hostip{$id}=$ip; + $hostrole{$id}=$role; + if ($domdescr) { $domaindescription{$domain}=$domdescr; } + if (($role eq 'library') && ($id ne $perlvar{'lonHostID'})) { + $libserv{$id}=$name; + } + } else { + if ($configline) { +# &logthis("Skipping hosts.tab line -$configline-"); + } + } } } @@ -164,17 +167,17 @@ print $fh (< ENDHEADERS -foreach $varname (keys %perlvar) { +foreach $varname (sort(keys(%perlvar))) { print $fh "$varname$perlvar{$varname}\n"; } print $fh "

Hosts

"; -foreach $id (keys %hostname) { -print $fh - ""; -print $fh "\n"; +foreach $id (sort(keys(%hostname))) { + print $fh + ""; + print $fh "\n"; } print $fh "
$id$hostdom{$id}$hostrole{$id}$hostname{$id}$hostip{$id}
$id$hostdom{$id}$hostrole{$id}$hostname{$id}$hostip{$id}

Spare Hosts

    "; -foreach $id (keys %spareid) { +foreach $id (sort(keys(%spareid))) { print $fh "
  1. $id\n"; } @@ -210,7 +213,8 @@ while ($line=) { $usage=$parts[4]; $usage=~s/\W//g; if ($usage>90) { - $warnings++; + $warnings++; + $notices++; } elsif ($usage>80) { $warnings++; } elsif ($usage>60) { @@ -220,11 +224,29 @@ while ($line=) { } close (DFH); print $fh ""; + + +print $fh "

    ps

    "; +print $fh "
    ";
    +$psproc=0;
    +
    +open (PSH,"ps -aux|");
    +while ($line=) { 
    +   print $fh "$line"; 
    +   $psproc++;
    +}
    +close (PSH);
    +print $fh "
    "; + +if ($psproc>200) { $notices++; } +if ($psproc>250) { $notices++; } + &errout($fh); # --------------------------------------------------------------- clean out tmp print $fh '

    Temporary Files

    '; $cleaned=0; +$old=0; while ($fname=<$perlvar{'lonDaemons'}/tmp/*>) { my ($dev,$ino,$mode,$nlink, $uid,$gid,$rdev,$size, @@ -233,12 +255,24 @@ while ($fname=<$perlvar{'lonDaemons'}/tm $now=time; $since=$now-$mtime; if ($since>$perlvar{'lonExpire'}) { - $cleaned++; - unlink("$fname"); + $line=''; + if (open(PROBE,$fname)) { + $line=; + close(PROBE); + } + unless ($line=~/^CHECKOUTTOKEN\&/) { + $cleaned++; + unlink("$fname"); + } else { + if ($since>365*$perlvar{'lonExpire'}) { + $cleaned++; + unlink("$fname"); + } else { $old++; } + } } } -print $fh "Cleaned up ".$cleaned." files."; +print $fh "Cleaned up ".$cleaned." files (".$old." old checkout tokens)."; # ------------------------------------------------------------ clean out lonIDs print $fh '

    Session Tokens

    '; @@ -325,20 +359,20 @@ if ($perlvar{'lonRole'} eq "library") { $errors++; print $fh '
    Killall lonsql: '. system('killall lonsql').' - '; - sleep 60; + sleep 2; print $fh unlink($lonsqlfile).' - '. system('killall -9 lonsql'). '
    '; print $fh "

    lonsql not running, trying to start

    "; system( "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors"); - sleep 120 unless $qflag; + sleep 2; if (-e $lonsqlfile) { print $fh "Seems like it started ...

    "; my $lfh=IO::File->new("$lonsqlfile"); my $lonsqlpid=<$lfh>; chomp($lonsqlpid); - sleep 30 unless $qflag; + sleep 2; if (kill 0 => $lonsqlpid) { print $fh "

    lonsql at pid $lonsqlpid responding

    "; } else { @@ -347,7 +381,7 @@ if ($perlvar{'lonRole'} eq "library") { print $fh "Give it one more try ...

    "; system( "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors"); - sleep 120 unless $qflag; + sleep 2; } } else { print $fh "Seems like that did not work!

    "; @@ -407,7 +441,8 @@ if (-e $londfile) { my $londpid=<$lfh>; chomp($londpid); if (kill 0 => $londpid) { - print $fh "

    lond at pid $londpid responding

    "; + print $fh "

    lond at pid $londpid responding, sending USR1

    "; + kill USR1 => $londpid; $restartflag=0; } else { $errors++; @@ -421,19 +456,19 @@ if ($restartflag==1) { $errors++; print $fh '
    Killall lond: '. system('killall lond').' - '; - sleep 60; + sleep 2; print $fh unlink($londfile).' - '.system('killall -9 lond'). '
    '; print $fh "

    lond not running, trying to start

    "; system( "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors"); - sleep 120 unless $qflag; + sleep 2; if (-e $londfile) { print $fh "Seems like it started ...

    "; my $lfh=IO::File->new("$londfile"); my $londpid=<$lfh>; chomp($londpid); - sleep 30 unless $qflag; + sleep 2; if (kill 0 => $londpid) { print $fh "

    lond at pid $londpid responding

    "; } else { @@ -442,7 +477,7 @@ if ($restartflag==1) { print $fh "Give it one more try ...

    "; system( "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors"); - sleep 120 unless $qflag; + sleep 2; } } else { print $fh "Seems like that did not work!

    "; @@ -517,19 +552,19 @@ if ($restartflag==1) { $errors++; print $fh '
    Killall lonc: '. system('killall lonc').' - '; - sleep 60; + sleep 2; print $fh unlink($loncfile).' - '.system('killall -9 lonc'). '
    '; print $fh "

    lonc not running, trying to start

    "; system( "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors"); - sleep 120 unless $qflag; + sleep 2; if (-e $loncfile) { print $fh "Seems like it started ...

    "; my $lfh=IO::File->new("$loncfile"); my $loncpid=<$lfh>; chomp($loncpid); - sleep 30 unless $qflag; + sleep 2; if (kill 0 => $loncpid) { print $fh "

    lonc at pid $loncpid responding

    "; } else { @@ -538,7 +573,7 @@ if ($restartflag==1) { print $fh "Give it one more try ...

    "; system( "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors"); - sleep 120 unless $qflag; + sleep 2; } } else { print $fh "Seems like that did not work!

    "; @@ -615,7 +650,7 @@ print $fh ""; print $fh '


    Connections

    '; print $fh ""; -foreach $tryserver (keys %hostname) { +foreach $tryserver (sort(keys(%hostname))) { $answer=reply("pong",$tryserver); if ($answer eq "$tryserver:$perlvar{'lonHostID'}") { @@ -681,8 +716,7 @@ if ($totalcount>200) { $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices"; system( - "metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html") - unless $qflag; + "metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html"); } 1;