Diff for /loncom/loncron between versions 1.18 and 1.29

version 1.18, 2001/03/15 13:20:46 version 1.29, 2002/05/27 19:21:59
Line 9 Line 9
 #  #
 # 7/14,7/15,7/19,7/21,7/22,11/18,  # 7/14,7/15,7/19,7/21,7/22,11/18,
 # 2/8 Gerd Kortemeyer  # 2/8 Gerd Kortemeyer
 # Dec 00 Scott Harrison  # 12/6/2000,12/8 Scott Harrison
 # 12/23 Gerd Kortemeyer  # 12/23 Gerd Kortemeyer
 # 02/12/2001 Scott Harrison  # 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::File;
 use IO::Socket;  use IO::Socket;
Line 46  ENDERROUT Line 55  ENDERROUT
   
 # ================================================================ Main Program  # ================================================================ Main Program
   
 # ------------------------------------------------------------ Read access.conf  # --------------------------------- Read loncapa_apache.conf and loncapa.conf
 {  my $perlvarref=LONCAPA::Configuration::read_conf('loncapa_apache.conf',
     my $config=IO::File->new("/etc/httpd/conf/access.conf");                                                   'loncapa.conf');
   %perlvar=%{$perlvarref};
     while (my $configline=<$config>) {  undef $perlvarref;
         if ($configline =~ /PerlSetVar/) {  delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
    my ($dummy,$varname,$varvalue)=split(/\s+/,$configline);  delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed
            $perlvar{$varname}=$varvalue;  
         }  
     }  
 }  
   
 # --------------------------------------- Make sure that LON-CAPA is configured  # --------------------------------------- Make sure that LON-CAPA is configured
 # I only test for one thing here (lonHostID).  This is just a safeguard.  # I only test for one thing here (lonHostID).  This is just a safeguard.
Line 201  while ($line=<DFH>) { Line 206  while ($line=<DFH>) {
    $usage=$parts[4];     $usage=$parts[4];
    $usage=~s/\W//g;     $usage=~s/\W//g;
    if ($usage>90) {      if ($usage>90) { 
       $warnings++;         $warnings++;
         $notices++; 
    } elsif ($usage>80) {     } elsif ($usage>80) {
       $warnings++;        $warnings++;
    } elsif ($usage>60) {     } elsif ($usage>60) {
Line 211  while ($line=<DFH>) { Line 217  while ($line=<DFH>) {
 }  }
 close (DFH);  close (DFH);
 print $fh "</pre>";  print $fh "</pre>";
   
   
   print $fh "<h3>ps</h3>";
   print $fh "<pre>";
   $psproc=0;
   
   open (PSH,"ps -aux|");
   while ($line=<PSH>) { 
      print $fh "$line"; 
      $psproc++;
   }
   close (PSH);
   print $fh "</pre>";
   
   if ($psproc>200) { $notices++; }
   if ($psproc>250) { $notices++; }
   
 &errout($fh);  &errout($fh);
   
 # --------------------------------------------------------------- clean out tmp  # --------------------------------------------------------------- clean out tmp
 print $fh '<hr><a name="tmp"><h2>Temporary Files</h2>';  print $fh '<hr><a name="tmp"><h2>Temporary Files</h2>';
 $cleaned=0;  $cleaned=0;
   $old=0;
 while ($fname=<$perlvar{'lonDaemons'}/tmp/*>) {  while ($fname=<$perlvar{'lonDaemons'}/tmp/*>) {
                           my ($dev,$ino,$mode,$nlink,                            my ($dev,$ino,$mode,$nlink,
                               $uid,$gid,$rdev,$size,                                $uid,$gid,$rdev,$size,
Line 224  while ($fname=<$perlvar{'lonDaemons'}/tm Line 248  while ($fname=<$perlvar{'lonDaemons'}/tm
                           $now=time;                            $now=time;
                           $since=$now-$mtime;                            $since=$now-$mtime;
                           if ($since>$perlvar{'lonExpire'}) {                            if ($since>$perlvar{'lonExpire'}) {
                               $cleaned++;                                $line='';
                               unlink("$fname");                                if (open(PROBE,$fname)) {
     $line=<PROBE>;
                                     close(PROBE);
         }
         unless ($line=~/^CHECKOUTTOKEN\&/) {
                                    $cleaned++;
                                    unlink("$fname");
         } else {
     if ($since>100*$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  # ------------------------------------------------------------ clean out lonIDs
 print $fh '<hr><a name="tokens"><h2>Session Tokens</h2>';  print $fh '<hr><a name="tokens"><h2>Session Tokens</h2>';
Line 258  print $fh "<h3>$active open session(s)</ Line 294  print $fh "<h3>$active open session(s)</
   
 print $fh '<hr><a name="httpd"><h2>httpd</h2><h3>Access Log</h3><pre>';  print $fh '<hr><a name="httpd"><h2>httpd</h2><h3>Access Log</h3><pre>';
   
 open (DFH,"tail -n40 /etc/httpd/logs/access_log|");  open (DFH,"tail -n25 /etc/httpd/logs/access_log|");
 while ($line=<DFH>) { print $fh "$line" };  while ($line=<DFH>) { print $fh "$line" };
 close (DFH);  close (DFH);
   
 print $fh "</pre><h3>Error Log</h3><pre>";  print $fh "</pre><h3>Error Log</h3><pre>";
   
 open (DFH,"tail -n50 /etc/httpd/logs/error_log|");  open (DFH,"tail -n25 /etc/httpd/logs/error_log|");
 while ($line=<DFH>) {   while ($line=<DFH>) { 
    print $fh "$line";     print $fh "$line";
    if ($line=~/\[error\]/) { $notices++; }      if ($line=~/\[error\]/) { $notices++; } 
Line 275  print $fh "</pre>"; Line 311  print $fh "</pre>";
   
   
 # ---------------------------------------------------------------------- lonsql  # ---------------------------------------------------------------------- lonsql
 #  
 # Do not run for now  my $restartflag=1;
 #  
 if ($perlvar{'lonRole'} eq "library") {  if ($perlvar{'lonRole'} eq "library") {
   
     print $fh '<hr><a name="lonsql"><h2>lonsql</h2><h3>Log</h3><pre>';      print $fh '<hr><a name="lonsql"><h2>lonsql</h2><h3>Log</h3><pre>';
           print "lonsql\n";
     if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){      if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
  open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");   open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");
  while ($line=<DFH>) {    while ($line=<DFH>) { 
Line 295  if ($perlvar{'lonRole'} eq "library") { Line 330  if ($perlvar{'lonRole'} eq "library") {
     print $fh "</pre>";      print $fh "</pre>";
           
     my $lonsqlfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";      my $lonsqlfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";
        
       $restartflag=1;
      
     if (-e $lonsqlfile) {      if (-e $lonsqlfile) {
  my $lfh=IO::File->new("$lonsqlfile");   my $lfh=IO::File->new("$lonsqlfile");
  my $lonsqlpid=<$lfh>;   my $lonsqlpid=<$lfh>;
  chomp($lonsqlpid);   chomp($lonsqlpid);
  if (kill 0 => $lonsqlpid) {   if (kill 0 => $lonsqlpid) {
     print $fh "<h3>lonsql at pid $lonsqlpid responding</h3>";      print $fh "<h3>lonsql at pid $lonsqlpid responding</h3>";
       $restartflag=0;
  } else {   } else {
     $errors++; $errors++;      $errors++; $errors++;
     print $fh "<h3>lonsql at pid $lonsqlpid not responding</h3>";      print $fh "<h3>lonsql at pid $lonsqlpid not responding</h3>";
    $restartflag=1;
    print $fh 
       "<h3>Decided to clean up stale .pid file and restart lonsql</h3>";
  }   }
     } else {      }
       if ($restartflag==1) {
  $errors++;   $errors++;
            print $fh '<br><font color="red">Killall lonsql: '.
                       system('killall lonsql').' - ';
                       sleep 60;
                       print $fh unlink($lonsqlfile).' - '.
                                 system('killall -9 lonsql').
                       '</font><br>';
  print $fh "<h3>lonsql not running, trying to start</h3>";   print $fh "<h3>lonsql not running, trying to start</h3>";
  system(   system(
  "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");   "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");
  sleep 120;   sleep 10;
  if (-e $lonsqlfile) {   if (-e $lonsqlfile) {
     print $fh "Seems like it started ...<p>";      print $fh "Seems like it started ...<p>";
     my $lfh=IO::File->new("$lonsqlfile");      my $lfh=IO::File->new("$lonsqlfile");
Line 326  if ($perlvar{'lonRole'} eq "library") { Line 374  if ($perlvar{'lonRole'} eq "library") {
  print $fh "Give it one more try ...<p>";   print $fh "Give it one more try ...<p>";
  system(   system(
  "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");   "$perlvar{'lonDaemons'}/lonsql 2>>$perlvar{'lonDaemons'}/logs/lonsql_errors");
  sleep 120;   sleep 10;
     }      }
  } else {   } else {
     print $fh "Seems like that did not work!<p>";      print $fh "Seems like that did not work!<p>";
Line 364  if ($perlvar{'lonRole'} eq "library") { Line 412  if ($perlvar{'lonRole'} eq "library") {
 # ------------------------------------------------------------------------ lond  # ------------------------------------------------------------------------ lond
   
 print $fh '<hr><a name="lond"><h2>lond</h2><h3>Log</h3><pre>';  print $fh '<hr><a name="lond"><h2>lond</h2><h3>Log</h3><pre>';
   print "lond\n";
   
 if (-e "$perlvar{'lonDaemons'}/logs/lond.log"){  if (-e "$perlvar{'lonDaemons'}/logs/lond.log"){
 open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lond.log|");  open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lond.log|");
 while ($line=<DFH>) {   while ($line=<DFH>) { 
    print $fh "$line";     print $fh "$line";
    if ($line=~/INFO/) { $notices++; }     if ($line=~/INFO/) { $notices++; }
Line 379  print $fh "</pre>"; Line 428  print $fh "</pre>";
   
 my $londfile="$perlvar{'lonDaemons'}/logs/lond.pid";  my $londfile="$perlvar{'lonDaemons'}/logs/lond.pid";
   
 my $restartflag=1;  $restartflag=1;
 if (-e $londfile) {      if (-e $londfile) {    
    my $lfh=IO::File->new("$londfile");     my $lfh=IO::File->new("$londfile");
    my $londpid=<$lfh>;     my $londpid=<$lfh>;
    chomp($londpid);     chomp($londpid);
    if (kill 0 => $londpid) {     if (kill 0 => $londpid) {
       print $fh "<h3>lond at pid $londpid responding</h3>";        print $fh "<h3>lond at pid $londpid responding, sending USR1</h3>";
         kill USR1 => $londpid;
       $restartflag=0;        $restartflag=0;
    } else {     } else {
       $errors++;        $errors++;
       print $fh "<h3>lond at pid $londpid not responding</h3>";        print $fh "<h3>lond at pid $londpid not responding</h3>";
       # Intelligently handle this.        $restartflag=1;
       # Possibility #1: there is no process  
       # Solution: remove .pid file and restart  
       if (getpgrp($londpid)==-1) {  
   unlink($londfile);  
   $restartflag=1;  
       }  
       else {  
       # Possibility #2: there is a live process that is not responding  
       #                 for an unknown reason  
       # Solution: kill parent and children processes, remove .pid and restart  
   `killall -9 lond`;  
   unlink($londfile);  
   $restartflag=1;  
       }  
       print $fh         print $fh 
   "<h3>Deciding to clean up stale .pid file and restart lond</h3>";    "<h3>Decided to clean up stale .pid file and restart lond</h3>";
    }     }
 }   } 
 if ($restartflag==1) {  if ($restartflag==1) {
    $errors++;     $errors++;
     print $fh '<br><font color="red">Killall lond: '.
                       system('killall lond').' - ';
             sleep 60;
             print $fh unlink($londfile).' - '.system('killall -9 lond').
                       '</font><br>';
    print $fh "<h3>lond not running, trying to start</h3>";     print $fh "<h3>lond not running, trying to start</h3>";
    system(     system(
      "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");       "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");
    sleep 120;     sleep 10;
    if (-e $londfile) {     if (-e $londfile) {
        print $fh "Seems like it started ...<p>";         print $fh "Seems like it started ...<p>";
        my $lfh=IO::File->new("$londfile");         my $lfh=IO::File->new("$londfile");
Line 429  if ($restartflag==1) { Line 470  if ($restartflag==1) {
           print $fh "Give it one more try ...<p>";            print $fh "Give it one more try ...<p>";
   system(    system(
  "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");   "$perlvar{'lonDaemons'}/lond 2>>$perlvar{'lonDaemons'}/logs/lond_errors");
           sleep 120;            sleep 10;
        }         }
    } else {     } else {
        print $fh "Seems like that did not work!<p>";         print $fh "Seems like that did not work!<p>";
Line 466  if ($size>40000) { Line 507  if ($size>40000) {
 # ------------------------------------------------------------------------ lonc  # ------------------------------------------------------------------------ lonc
   
 print $fh '<hr><a name="lonc"><h2>lonc</h2><h3>Log</h3><pre>';  print $fh '<hr><a name="lonc"><h2>lonc</h2><h3>Log</h3><pre>';
   print "lonc\n";
   
 if (-e "$perlvar{'lonDaemons'}/logs/lonc.log"){  if (-e "$perlvar{'lonDaemons'}/logs/lonc.log"){
 open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonc.log|");  open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/lonc.log|");
 while ($line=<DFH>) {   while ($line=<DFH>) { 
    print $fh "$line";     print $fh "$line";
    if ($line=~/INFO/) { $notices++; }     if ($line=~/INFO/) { $notices++; }
Line 493  if (-e $loncfile) { Line 535  if (-e $loncfile) {
    } else {     } else {
       $errors++;        $errors++;
       print $fh "<h3>lonc at pid $loncpid not responding</h3>";        print $fh "<h3>lonc at pid $loncpid not responding</h3>";
       # Intelligently handle this.  
       # Possibility #1: there is no process  
       # Solution: remove .pid file and restart  
       if (getpgrp($loncpid)==-1) {  
   unlink($loncfile);  
   $restartflag=1;  
       }  
       else {  
       # Possibility #2: there is a live process that is not responding  
       #                 for an unknown reason  
       # Solution: kill parent and children processes, remove .pid and restart        # Solution: kill parent and children processes, remove .pid and restart
   `killall -9 lonc`;  
   unlink($loncfile);  
   $restartflag=1;    $restartflag=1;
       }  
       print $fh         print $fh 
   "<h3>Deciding to clean up stale .pid file and restart lonc</h3>";    "<h3>Decided to clean up stale .pid file and restart lonc</h3>";
    }     }
 }   } 
 if ($restartflag==1) {  if ($restartflag==1) {
    $errors++;     $errors++;
     print $fh '<br><font color="red">Killall lonc: '.
               system('killall lonc').' - ';
             sleep 60;
             print $fh unlink($loncfile).' - '.system('killall -9 lonc').
                       '</font><br>';
    print $fh "<h3>lonc not running, trying to start</h3>";     print $fh "<h3>lonc not running, trying to start</h3>";
  system(   system(
  "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");   "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");
    sleep 120;     sleep 10;
    if (-e $loncfile) {     if (-e $loncfile) {
        print $fh "Seems like it started ...<p>";         print $fh "Seems like it started ...<p>";
        my $lfh=IO::File->new("$loncfile");         my $lfh=IO::File->new("$loncfile");
Line 532  if ($restartflag==1) { Line 566  if ($restartflag==1) {
           print $fh "Give it one more try ...<p>";            print $fh "Give it one more try ...<p>";
    system(     system(
  "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");   "$perlvar{'lonDaemons'}/lonc 2>>$perlvar{'lonDaemons'}/logs/lonc_errors");
           sleep 120;            sleep 10;
        }         }
    } else {     } else {
        print $fh "Seems like that did not work!<p>";         print $fh "Seems like that did not work!<p>";
Line 570  if ($size>40000) { Line 604  if ($size>40000) {
 # ---------------------------------------------------------------------- lonnet  # ---------------------------------------------------------------------- lonnet
   
 print $fh '<hr><a name="lonnet"><h2>lonnet</h2><h3>Temp Log</h3><pre>';  print $fh '<hr><a name="lonnet"><h2>lonnet</h2><h3>Temp Log</h3><pre>';
   print "lonnet\n";
 if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){  if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){
 open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|");  open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|");
 while ($line=<DFH>) {   while ($line=<DFH>) { 
Line 627  print $fh "</table>"; Line 662  print $fh "</table>";
 # ------------------------------------------------------------ Delayed messages  # ------------------------------------------------------------ Delayed messages
   
 print $fh '<hr><a name="delayed"><h2>Delayed Messages</h2>';  print $fh '<hr><a name="delayed"><h2>Delayed Messages</h2>';
   print "buffers\n";
   
 print $fh '<h3>Scanning Permanent Log</h3>';  print $fh '<h3>Scanning Permanent Log</h3>';
   
Line 663  print $fh "<h1>Total Error Count: $total Line 699  print $fh "<h1>Total Error Count: $total
 $now=time;  $now=time;
 $date=localtime($now);  $date=localtime($now);
 print $fh "<hr>$date ($now)</body></html>\n";  print $fh "<hr>$date ($now)</body></html>\n";
   print "writing done\n";
 }  }
   
 rename ("$statusdir/newstatus.html","$statusdir/index.html");  rename ("$statusdir/newstatus.html","$statusdir/index.html");
   
 if ($totalcount>200) {  if ($totalcount>200) {
      print "mailing\n";
    $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";     $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
    $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices";      $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices"; 
    system(     system(

Removed from v.1.18  
changed lines
  Added in v.1.29


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
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.