--- loncom/loncron 2002/07/27 19:06:41 1.32 +++ loncom/loncron 2003/04/07 18:19:23 1.38 @@ -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 @@ -155,6 +150,7 @@ print $fh (<<ENDHEADERS); <li><a href="#lonsql">lonsql</a> <li><a href="#lond">lond</a> <li><a href="#lonc">lonc</a> +<li><a href="#lonhttpd">lonhttpd</a> <li><a href="#lonnet">lonnet</a> <li><a href="#connections">Connections</a> <li><a href="#delayed">Delayed Messages</a> @@ -407,7 +403,7 @@ if ($perlvar{'lonRole'} eq "library") { $atime,$mtime,$ctime, $blksize,$blocks)=stat($fname); - if ($size>40000) { + if ($size>200000) { print $fh "Rotating logs ...<p>"; rename("$fname.2","$fname.3"); rename("$fname.1","$fname.2"); @@ -608,6 +604,102 @@ if ($size>40000) { &errout($fh); +# -------------------------------------------------------------------- lonhttpd + +print $fh '<hr><a name="lonhttpd"><h2>lonhttpd</h2><h3>Log</h3><pre>'; +print "lonhttpd\n"; + +if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log"){ +open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonhttpd.log|"); +while ($line=<DFH>) { + print $fh "$line"; + if ($line=~/INFO/) { $notices++; } + if ($line=~/WARNING/) { $notices++; } + if ($line=~/CRITICAL/) { $warnings++; } +}; +close (DFH); +} +print $fh "</pre>"; + +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 "<h3>lonhttpd at pid $lonhttpdpid responding</h3>"; + $restartflag=0; + } else { + $errors++; + print $fh "<h3>lonhttpd at pid $lonhttpdpid not responding</h3>"; + # Solution: kill parent and children processes, remove .pid and restart + $restartflag=1; + print $fh + "<h3>Decided to clean up stale .pid file and restart lonhttpd</h3>"; + } +} +if ($restartflag==1) { + $errors++; + print $fh '<br><font color="red">Killall lonhttpd: '. + system('killall lonhttpd').' - '; + sleep 2; + print $fh unlink($lonhttpdfile).' - '.system('killall -9 lonhttpd'). + '</font><br>'; + print $fh "<h3>lonhttpd not running, trying to start</h3>"; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + if (-e $lonhttpdfile) { + print $fh "Seems like it started ...<p>"; + my $lfh=IO::File->new("$lonhttpdfile"); + my $lonhttpdpid=<$lfh>; + chomp($lonhttpdpid); + sleep 2; + if (kill 0 => $lonhttpdpid) { + print $fh "<h3>lonhttpd at pid $lonhttpdpid responding</h3>"; + } else { + $errors++; $errors++; + print $fh "<h3>lonhttpd at pid $lonhttpdpid not responding</h3>"; + print $fh "Give it one more try ...<p>"; + system( + "$perlvar{'lonDaemons'}/lonhttpd 2>>$perlvar{'lonDaemons'}/logs/lonhttpd_errors"); + sleep 2; + } + } else { + print $fh "Seems like that did not work!<p>"; + $errors++; + } + if (-e "$perlvar{'lonDaemons'}/logs/lonhttpd.log") { + print $fh "<p><pre>"; + open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonhttpd.log|"); + while ($line=<DFH>) { + print $fh "$line"; + if ($line=~/WARNING/) { $notices++; } + if ($line=~/CRITICAL/) { $notices++; } + }; + close (DFH); + print $fh "</pre>"; + } +} + +$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 ...<p>"; + rename("$fname.2","$fname.3"); + rename("$fname.1","$fname.2"); + rename("$fname","$fname.1"); +} + + +&errout($fh); # ---------------------------------------------------------------------- lonnet print $fh '<hr><a name="lonnet"><h2>lonnet</h2><h3>Temp Log</h3><pre>'; @@ -713,7 +805,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");