--- loncom/loncron 2002/05/22 21:41:34 1.28 +++ loncom/loncron 2003/06/10 22:07:26 1.39 @@ -9,13 +9,9 @@ # # 7/14,7/15,7/19,7/21,7/22,11/18, # 2/8 Gerd Kortemeyer -# 12/6/2000,12/8 Scott Harrison # 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; @@ -56,8 +52,7 @@ ENDERROUT # ================================================================ Main Program # --------------------------------- Read loncapa_apache.conf and loncapa.conf -my $perlvarref=LONCAPA::Configuration::read_conf('loncapa_apache.conf', - 'loncapa.conf'); +my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf'); %perlvar=%{$perlvarref}; undef $perlvarref; delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed @@ -93,14 +88,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-"); + } + } } } @@ -148,6 +150,7 @@ print $fh (<lonsql
  • lond
  • lonc +
  • lonhttpd
  • lonnet
  • Connections
  • Delayed Messages @@ -160,17 +163,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"; } @@ -239,6 +242,7 @@ if ($psproc>250) { $notices++; } # --------------------------------------------------------------- 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, @@ -247,12 +251,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

      '; @@ -300,8 +316,6 @@ print $fh ""; # ---------------------------------------------------------------------- lonsql my $restartflag=1; -if ($perlvar{'lonRole'} eq "library") { - print $fh '

      lonsql

      Log

      ';
           print "lonsql\n";
           if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
      @@ -339,20 +353,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 10; + sleep 2; if (-e $lonsqlfile) { print $fh "Seems like it started ...

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

      lonsql at pid $lonsqlpid responding

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

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

      "; @@ -387,7 +401,7 @@ if ($perlvar{'lonRole'} eq "library") { $atime,$mtime,$ctime, $blksize,$blocks)=stat($fname); - if ($size>40000) { + if ($size>200000) { print $fh "Rotating logs ...

      "; rename("$fname.2","$fname.3"); rename("$fname.1","$fname.2"); @@ -395,7 +409,6 @@ if ($perlvar{'lonRole'} eq "library") { } &errout($fh); -} # ------------------------------------------------------------------------ lond print $fh '


      lond

      Log

      ';
      @@ -436,19 +449,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 10; + sleep 2; if (-e $londfile) { print $fh "Seems like it started ...

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

      lond at pid $londpid responding

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

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

      "; @@ -532,19 +545,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 10; + sleep 2; if (-e $loncfile) { print $fh "Seems like it started ...

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

      lonc at pid $loncpid responding

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

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

      "; @@ -588,6 +601,102 @@ if ($size>40000) { &errout($fh); +# -------------------------------------------------------------------- lonhttpd + +print $fh '


      lonhttpd

      Log

      ';
      +print "lonhttpd\n";
      +
      +if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log"){
      +open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
      +while ($line=) { 
      +   print $fh "$line";
      +   if ($line=~/INFO/) { $notices++; }
      +   if ($line=~/WARNING/) { $notices++; }
      +   if ($line=~/CRITICAL/) { $warnings++; }
      +};
      +close (DFH);
      +}
      +print $fh "
      "; + +my $lonhttpdfile="$perlvar{'lonDaemons'}/logs/lonhttpd.pid"; + +$restartflag=1; +if (-e $lonhttpdfile) { + my $lfh=IO::File->new("$lonhttpdfile"); + my $lonhttpdpid=<$lfh>; + chomp($lonhttpdpid); + if (kill 0 => $lonhttpdpid) { + print $fh "

      lonhttpd at pid $lonhttpdpid responding

      "; + $restartflag=0; + } else { + $errors++; + print $fh "

      lonhttpd at pid $lonhttpdpid not responding

      "; + # Solution: kill parent and children processes, remove .pid and restart + $restartflag=1; + print $fh + "

      Decided to clean up stale .pid file and restart lonhttpd

      "; + } +} +if ($restartflag==1) { + $errors++; + print $fh '
      Killall lonhttpd: '. + system('killall lonhttpd').' - '; + sleep 2; + print $fh unlink($lonhttpdfile).' - '.system('killall -9 lonhttpd'). + '
      '; + print $fh "

      lonhttpd not running, trying to start

      "; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + if (-e $lonhttpdfile) { + print $fh "Seems like it started ...

      "; + my $lfh=IO::File->new("$lonhttpdfile"); + my $lonhttpdpid=<$lfh>; + chomp($lonhttpdpid); + sleep 2; + if (kill 0 => $lonhttpdpid) { + print $fh "

      lonhttpd at pid $lonhttpdpid responding

      "; + } else { + $errors++; $errors++; + print $fh "

      lonhttpd at pid $lonhttpdpid not responding

      "; + print $fh "Give it one more try ...

      "; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + } + } else { + print $fh "Seems like that did not work!

      "; + $errors++; + } + if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log") { + print $fh "

      ";
      +    open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonhttpd.log|");
      +    while ($line=) { 
      +      print $fh "$line";
      +      if ($line=~/WARNING/) { $notices++; }
      +      if ($line=~/CRITICAL/) { $notices++; }
      +    };
      +    close (DFH);
      +    print $fh "
      "; + } +} + +$fname="$perlvar{'lonDaemons'}/logs/lonhttpd.log"; + + my ($dev,$ino,$mode,$nlink, + $uid,$gid,$rdev,$size, + $atime,$mtime,$ctime, + $blksize,$blocks)=stat($fname); + +if ($size>40000) { + print $fh "Rotating logs ...

      "; + rename("$fname.2","$fname.3"); + rename("$fname.1","$fname.2"); + rename("$fname","$fname.1"); +} + + +&errout($fh); # ---------------------------------------------------------------------- lonnet print $fh '


      lonnet

      Temp Log

      ';
      @@ -630,7 +739,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'}") { @@ -693,7 +802,10 @@ rename ("$statusdir/newstatus.html","$st if ($totalcount>200) { print "mailing\n"; - $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}"; + $emailto="$perlvar{'lonAdmEMail'}"; + if ($totalcount>600) { + $emailto.=",$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"); 500 Internal Server Error

      Internal Server Error

      The server encountered an internal error or misconfiguration and was unable to complete your request.

      Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

      More information about this error may be available in the server error log.