Diff for /loncom/loncron between versions 1.52 and 1.81

version 1.52, 2004/06/04 19:29:31 version 1.81, 2009/06/11 00:15:27
Line 32  use strict; Line 32  use strict;
   
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA::Configuration;  use LONCAPA::Configuration;
   use Apache::lonnet;
   use Apache::loncommon;
   
 use IO::File;  use IO::File;
 use IO::Socket;  use IO::Socket;
Line 43  use vars qw (%perlvar %simplestatus $err Line 45  use vars qw (%perlvar %simplestatus $err
 my $statusdir="/home/httpd/html/lon-status";  my $statusdir="/home/httpd/html/lon-status";
   
   
 # -------------------------------------------------- Non-critical communication  
 sub reply {  
     my ($cmd,$server)=@_;  
     my $peerfile="$perlvar{'lonSockDir'}/$server";  
     my $client=IO::Socket::UNIX->new(Peer    =>"$peerfile",  
                                      Type    => SOCK_STREAM,  
                                      Timeout => 10)  
        or return "con_lost";  
     print $client "$cmd\n";  
     my $answer=<$client>;  
     chomp($answer);  
     if (!$answer) { $answer="con_lost"; }  
     return $answer;  
 }  
   
 # --------------------------------------------------------- Output error status  # --------------------------------------------------------- Output error status
   
 sub log {  sub log {
Line 76  sub errout { Line 63  sub errout {
 ENDERROUT  ENDERROUT
 }  }
   
   sub rotate_logfile {
       my ($file,$fh,$description) = @_;
       my $size=(stat($file))[7];
       if ($size>40000) {
    &log($fh,"<p>Rotating $description ...</p>");
    rename("$file.2","$file.3");
    rename("$file.1","$file.2");
    rename("$file","$file.1");
       } 
   }
   
 sub start_daemon {  sub start_daemon {
     my ($fh,$daemon,$pidfile,$args) = @_;      my ($fh,$daemon,$pidfile,$args) = @_;
     my $progname=$daemon;      my $progname=$daemon;
     if ($daemon eq 'lonc' && $args eq 'new') {      if ($daemon eq 'lonc') {
  $progname='loncnew';    $progname='loncnew'; 
  print "new ";  
     }      }
     my $error_fname="$perlvar{'lonDaemons'}/logs/${daemon}_errors";      my $error_fname="$perlvar{'lonDaemons'}/logs/${daemon}_errors";
     my $size=(stat($error_fname))[7];      &rotate_logfile($error_fname,$fh,'error logs');
     if ($size>40000) {      if ($daemon eq 'lonc') {
  &log($fh,"<p>Rotating error logs ...</p>");   &clean_sockets($fh);
  rename("$error_fname.2","$error_fname.3");  
  rename("$error_fname.1","$error_fname.2");  
  rename("$error_fname","$error_fname.1");  
     }      }
     system("$perlvar{'lonDaemons'}/$progname 2>$perlvar{'lonDaemons'}/logs/${daemon}_errors");      system("$perlvar{'lonDaemons'}/$progname 2>$perlvar{'lonDaemons'}/logs/${daemon}_errors");
     sleep 2;      sleep 1;
     if (-e $pidfile) {      if (-e $pidfile) {
  &log($fh,"<p>Seems like it started ...</p>");   &log($fh,"<p>Seems like it started ...</p>");
  my $lfh=IO::File->new("$pidfile");   my $lfh=IO::File->new("$pidfile");
  my $daemonpid=<$lfh>;   my $daemonpid=<$lfh>;
  chomp($daemonpid);   chomp($daemonpid);
  sleep 2;   if ($daemonpid =~ /^\d+$/ && kill 0 => $daemonpid) {
  if (kill 0 => $daemonpid) {  
     return 1;      return 1;
  } else {   } else {
     return 0;      return 0;
Line 111  sub start_daemon { Line 104  sub start_daemon {
 }  }
   
 sub checkon_daemon {  sub checkon_daemon {
     my ($fh,$daemon,$maxsize,$sendusr1,$args)=@_;      my ($fh,$daemon,$maxsize,$send,$args)=@_;
   
       my $result;
     &log($fh,'<hr /><a name="'.$daemon.'" /><h2>'.$daemon.'</h2><h3>Log</h3><p style="white-space: pre;"><tt>');      &log($fh,'<hr /><a name="'.$daemon.'" /><h2>'.$daemon.'</h2><h3>Log</h3><p style="white-space: pre;"><tt>');
     printf("%-10s ",$daemon);      printf("%-15s ",$daemon);
     if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){      if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
  open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|");   open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|");
  while (my $line=<DFH>) {    while (my $line=<DFH>) { 
Line 135  sub checkon_daemon { Line 129  sub checkon_daemon {
  my $lfh=IO::File->new("$pidfile");   my $lfh=IO::File->new("$pidfile");
  $daemonpid=<$lfh>;   $daemonpid=<$lfh>;
  chomp($daemonpid);   chomp($daemonpid);
  if (kill 0 => $daemonpid) {   if ($daemonpid =~ /^\d+$/ && kill 0 => $daemonpid) {
     &log($fh,"<h3>$daemon at pid $daemonpid responding");      &log($fh,"<h3>$daemon at pid $daemonpid responding");
     if ($sendusr1) { &log($fh,", sending USR1"); }      if ($send) { &log($fh,", sending $send"); }
     &log($fh,"</h3>");      &log($fh,"</h3>");
     if ($sendusr1) { kill USR1 => $daemonpid; }      if ($send eq 'USR1') { kill USR1 => $daemonpid; }
       if ($send eq 'USR2') { kill USR2 => $daemonpid; }
     $restartflag=0;      $restartflag=0;
     print "running\n";      if ($send eq 'USR2') {
    $result = 'reloaded';
    print "reloaded\n";
       } else {
    $result = 'running';
    print "running\n";
       }
  } else {   } else {
     $errors++;      $errors++;
     &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");      &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");
Line 152  sub checkon_daemon { Line 153  sub checkon_daemon {
     if ($restartflag==1) {      if ($restartflag==1) {
  $simplestatus{$daemon}='off';   $simplestatus{$daemon}='off';
  $errors++;   $errors++;
    my $kadaemon=$daemon;
    if ($kadaemon eq 'lonmemcached') { $kadaemon='memcached'; }
  &log($fh,'<br><font color="red">Killall '.$daemon.': '.   &log($fh,'<br><font color="red">Killall '.$daemon.': '.
     `killall $daemon 2>&1`.' - ');      `killall $kadaemon 2>&1`.' - ');
  sleep 2;   sleep 1;
  &log($fh,unlink($pidfile).' - '.   &log($fh,unlink($pidfile).' - '.
     `killall -9 $daemon 2>&1`.      `killall -9 $kadaemon 2>&1`.
     '</font><br>');      '</font><br>');
  &log($fh,"<h3>$daemon not running, trying to start</h3>");   &log($fh,"<h3>$daemon not running, trying to start</h3>");
   
  if (&start_daemon($fh,$daemon,$pidfile,$args)) {   if (&start_daemon($fh,$daemon,$pidfile,$args)) {
     &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");      &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");
     $simplestatus{$daemon}='restarted';      $simplestatus{$daemon}='restarted';
       $result = 'started';
     print "started\n";      print "started\n";
  } else {   } else {
     $errors++;      $errors++;
Line 172  sub checkon_daemon { Line 176  sub checkon_daemon {
     if (&start_daemon($fh,$daemon,$pidfile,$args)) {      if (&start_daemon($fh,$daemon,$pidfile,$args)) {
  &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");   &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");
  $simplestatus{$daemon}='restarted';   $simplestatus{$daemon}='restarted';
    $result = 'started';
  print "started\n";   print "started\n";
     } else {      } else {
    $result = 'failed';
  print " failed\n";   print " failed\n";
  $simplestatus{$daemon}='failed';   $simplestatus{$daemon}='failed';
  $errors++; $errors++;   $errors++; $errors++;
Line 196  sub checkon_daemon { Line 202  sub checkon_daemon {
     }      }
           
     my $fname="$perlvar{'lonDaemons'}/logs/$daemon.log";      my $fname="$perlvar{'lonDaemons'}/logs/$daemon.log";
           &rotate_logfile($fname,$fh,'logs');
     my ($dev,$ino,$mode,$nlink,  
  $uid,$gid,$rdev,$size,  
  $atime,$mtime,$ctime,  
  $blksize,$blocks)=stat($fname);  
       
     if ($size>$maxsize) {  
  &log($fh,"<p>Rotating logs ...</p>");  
  rename("$fname.2","$fname.3");  
  rename("$fname.1","$fname.2");  
  rename("$fname","$fname.1");  
     }  
   
     &errout($fh);      &errout($fh);
       return $result;
 }  }
   
 # --------------------------------------------------------------------- Machine  # --------------------------------------------------------------------- Machine
Line 260  sub log_machine_info { Line 256  sub log_machine_info {
     &log($fh,"<pre>");      &log($fh,"<pre>");
     my $psproc=0;      my $psproc=0;
   
     open (PSH,"ps -aux --cols 140 |");      open (PSH,"ps aux --cols 140 |");
     while (my $line=<PSH>) {       while (my $line=<PSH>) { 
  &log($fh,&encode_entities($line,'<>&"'));    &log($fh,&encode_entities($line,'<>&"')); 
  $psproc++;   $psproc++;
Line 271  sub log_machine_info { Line 267  sub log_machine_info {
     if ($psproc>200) { $notices++; }      if ($psproc>200) { $notices++; }
     if ($psproc>250) { $notices++; }      if ($psproc>250) { $notices++; }
   
       &log($fh,"<h3>distprobe</h3>");
       &log($fh,"<pre>");
       open(DSH,"$perlvar{'lonDaemons'}/distprobe |");
       while (my $line=<DSH>) { 
    &log($fh,&encode_entities($line,'<>&"')); 
    $psproc++;
       }
       close(DSH);
       &log($fh,"</pre>");
   
     &errout($fh);      &errout($fh);
 }  }
   
 sub start_logging {  sub start_logging {
     my ($hostdom,$hostrole,$hostname,$spareid)=@_;  
     my $fh=IO::File->new(">$statusdir/newstatus.html");      my $fh=IO::File->new(">$statusdir/newstatus.html");
     my %simplestatus=();      my %simplestatus=();
     my $now=time;      my $now=time;
Line 300  sub start_logging { Line 305  sub start_logging {
 <li><a href="#lonsql">lonsql</a></li>  <li><a href="#lonsql">lonsql</a></li>
 <li><a href="#lond">lond</a></li>  <li><a href="#lond">lond</a></li>
 <li><a href="#lonc">lonc</a></li>  <li><a href="#lonc">lonc</a></li>
 <li><a href="#lonhttpd">lonhttpd</a></li>  
 <li><a href="#lonnet">lonnet</a></li>  <li><a href="#lonnet">lonnet</a></li>
 <li><a href="#connections">Connections</a></li>  <li><a href="#connections">Connections</a></li>
 <li><a href="#delayed">Delayed Messages</a></li>  <li><a href="#delayed">Delayed Messages</a></li>
Line 318  ENDHEADERS Line 322  ENDHEADERS
      &encode_entities($perlvar{$varname},'<>&"')."</td></tr>\n");       &encode_entities($perlvar{$varname},'<>&"')."</td></tr>\n");
     }      }
     &log($fh,"</table><h3>Hosts</h3><table border='2'>");      &log($fh,"</table><h3>Hosts</h3><table border='2'>");
     foreach my $id (sort(keys(%{$hostname}))) {      my %hostname = &Apache::lonnet::all_hostnames();
       foreach my $id (sort(keys(%hostname))) {
    my $role = (&Apache::lonnet::is_library($id) ? 'library'
                                        : 'access');
  &log($fh,   &log($fh,
     "<tr><td>$id</td><td>".$hostdom->{$id}.      "<tr><td>$id</td><td>".&Apache::lonnet::host_domain($id).
     "</td><td>".$hostrole->{$id}.      "</td><td>".$role.
     "</td><td>".$hostname->{$id}."</td></tr>\n");      "</td><td>".&Apache::lonnet::hostname($id)."</td></tr>\n");
     }      }
     &log($fh,"</table><h3>Spare Hosts</h3><ol>");      &log($fh,"</table><h3>Spare Hosts</h3><ul>");
     foreach my $id (sort(keys(%{$spareid}))) {      foreach my $type (sort(keys(%Apache::lonnet::spareid))) {
  &log($fh,"<li>$id\n</li>");   &log($fh,"<li>$type\n<ol>");
    foreach my $id (@{ $Apache::lonnet::spareid{$type} }) {
       &log($fh,"<li>$id</li>\n");
    }
    &log($fh,"</ol>\n</li>\n");
     }      }
     &log($fh,"</ol>\n");      &log($fh,"</ul>\n");
     return $fh;      return $fh;
 }  }
   
Line 390  sub clean_lonIDs { Line 401  sub clean_lonIDs {
     &log($fh,"<h3>$active open session(s)</h3>");      &log($fh,"<h3>$active open session(s)</h3>");
 }  }
   
   # ----------------------------------------------------------- clean out sockets
   sub clean_sockets {
       my ($fh)=@_;
       my $cleaned=0;
       opendir(SOCKETS,$perlvar{'lonSockDir'});
       while (my $fname=readdir(SOCKETS)) {
    next if (-d $fname 
    || $fname=~/(mysqlsock|maximasock|rsock|\Q$perlvar{'lonSockDir'}\E)/);
    $cleaned++;
    &log($fh,"Unlinking $fname<br />");
    unlink("/home/httpd/sockets/$fname");
       }
       &log($fh,"<p>Cleaned up ".$cleaned." stale sockets.</p>");
   }
   
   
 # ----------------------------------------------------------------------- httpd  # ----------------------------------------------------------------------- httpd
 sub check_httpd_logs {  sub check_httpd_logs {
Line 436  sub rotate_lonnet_logs { Line 462  sub rotate_lonnet_logs {
     } else { &log($fh,"No perm log\n") }      } else { &log($fh,"No perm log\n") }
   
     my $fname="$perlvar{'lonDaemons'}/logs/lonnet.log";      my $fname="$perlvar{'lonDaemons'}/logs/lonnet.log";
       &rotate_logfile($fname,$fh,'lonnet log');
     my ($dev,$ino,$mode,$nlink,  
  $uid,$gid,$rdev,$size,  
  $atime,$mtime,$ctime,  
  $blksize,$blocks)=stat($fname);  
   
     if ($size>40000) {  
  &log($fh,"<p>Rotating logs ...</p>");  
  rename("$fname.2","$fname.3");  
  rename("$fname.1","$fname.2");  
  rename("$fname","$fname.1");  
     }  
   
     &log($fh,"</pre>");      &log($fh,"</pre>");
     &errout($fh);      &errout($fh);
 }  }
   
   sub rotate_other_logs {
       my ($fh) = @_;
       my $fname="$perlvar{'lonDaemons'}/logs/autoenroll.log";
       &rotate_logfile($fname,$fh,'Auto Enroll log');
       $fname="$perlvar{'lonDaemons'}/logs/autocreate.log";
       &rotate_logfile($fname,$fh,'Create Course log');
       $fname="$perlvar{'lonDaemons'}/logs/searchcat.log";
       &rotate_logfile($fname,$fh,'Search Cataloguing log');
   }
   
 # ----------------------------------------------------------------- Connections  # ----------------------------------------------------------------- Connections
 sub test_connections {  sub test_connections {
     my ($fh,$hostname)=@_;      my ($fh)=@_;
     &log($fh,'<hr /><a name="connections" /><h2>Connections</h2>');      &log($fh,'<hr /><a name="connections" /><h2>Connections</h2>');
     print "testing connections\n";      print "testing connections\n";
     &log($fh,"<table border='2'>");      &log($fh,"<table border='2'>");
     my ($good,$bad)=(0,0);      my ($good,$bad)=(0,0);
     foreach my $tryserver (sort(keys(%{$hostname}))) {      my %hostname = &Apache::lonnet::all_hostnames();
       foreach my $tryserver (sort(keys(%hostname))) {
  print(".");   print(".");
  my $result;   my $result;
  my $answer=reply("pong",$tryserver);   my $answer=&Apache::lonnet::reply("ping",$tryserver);
  if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {   if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
     $result="<b>ok</b>";      $result="<b>ok</b>";
     $good++;      $good++;
Line 513  sub check_delayed_msg { Line 539  sub check_delayed_msg {
   
     if ($unsend) { $simplestatus{'unsend'}=$unsend; }      if ($unsend) { $simplestatus{'unsend'}=$unsend; }
     &log($fh,"<h3>Outgoing Buffer</h3>\n<pre>");      &log($fh,"<h3>Outgoing Buffer</h3>\n<pre>");
   # list directory with delayed messages and remember offline servers
       my %servers=();
     open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");      open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
     while (my $line=<DFH>) {       while (my $line=<DFH>) {
           my ($server)=($line=~/\.(\w+)$/);
           if ($server) { $servers{$server}=1; }
  &log($fh,&encode_entities($line,'<>&"'));   &log($fh,&encode_entities($line,'<>&"'));
     }      }
     &log($fh,"</pre>\n");      &log($fh,"</pre>\n");
     close (DFH);      close (DFH);
   # pong to all servers that have delayed messages
   # this will trigger a reverse connection, which should flush the buffers
       foreach my $tryserver (keys %servers) {
    my $answer=&Apache::lonnet::reply("pong",$tryserver);
    &log($fh,"Pong to $tryserver: $answer<br />");
       }
 }  }
   
 sub finish_logging {  sub finish_logging {
Line 541  sub finish_logging { Line 576  sub finish_logging {
 }  }
   
 sub log_simplestatus {  sub log_simplestatus {
     rename ("$statusdir/newstatus.html","$statusdir/index.html");      rename("$statusdir/newstatus.html","$statusdir/index.html");
           
     my $sfh=IO::File->new(">$statusdir/loncron_simple.txt");      my $sfh=IO::File->new(">$statusdir/loncron_simple.txt");
     foreach (keys %simplestatus) {      foreach (keys %simplestatus) {
Line 553  sub log_simplestatus { Line 588  sub log_simplestatus {
   
 sub send_mail {  sub send_mail {
     print "sending mail\n";      print "sending mail\n";
     my $emailto="$perlvar{'lonAdmEMail'}";      my $defdom = $perlvar{'lonDefDomain'};
     if ($totalcount>1000) {      my $origmail = $perlvar{'lonAdmEMail'};
       my $emailto = &Apache::loncommon::build_recipient_list(undef,
                                      'lonstatusmail',$defdom,$origmail);
       if ($totalcount>2500) {
  $emailto.=",$perlvar{'lonSysEMail'}";   $emailto.=",$perlvar{'lonSysEMail'}";
     }      }
     my $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices";       my $subj="LON: $perlvar{'lonHostID'} E:$errors W:$warnings N:$notices"; 
   
     my $result=system("metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html >& /dev/null");      my $result=system("metasend -b -S 4000000 -t $emailto -s '$subj' -f $statusdir/index.html -m text/html >& /dev/null");
     if ($result != 0) {      if ($result != 0) {
  $result=system("mail -s '$subj' $emailto < $statusdir/index.html");   $result=system("mail -s '$subj' $emailto < $statusdir/index.html");
     }      }
Line 570  sub usage { Line 608  sub usage {
 loncron - housekeeping program that checks up on various parts of Lon-CAPA  loncron - housekeeping program that checks up on various parts of Lon-CAPA
   
 Options:  Options:
    --help     Display help     --help     Display 
    --oldlonc  When starting the lonc daemon use 'lonc' not 'loncnew'  
    --noemail  Do not send the status email     --noemail  Do not send the status email
    --justcheckconnections  Only check the current status of the lonc/d     --justcheckconnections  Only check the current status of the lonc/d
                                 connections, do not send emails do not                                  connections, do not send emails do not
Line 581  Options: Line 618  Options:
                                 running, do not send emails do not                                  running, do not send emails do not
                                 check the lonc/d connections, do not                                  check the lonc/d connections, do not
                                 generate lon-status                                  generate lon-status
      --justreload            Only tell the daemons to reload the config files,
    do not send emails do not
                                   check if the daemons are running, do not
                                   generate lon-status
                                                         
 USAGE  USAGE
 }  }
   
 # ================================================================ Main Program  # ================================================================ Main Program
 sub main () {  sub main () {
     my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections);      my ($help,$justcheckdaemons,$noemail,$justcheckconnections,
    $justreload);
     &GetOptions("help"                 => \$help,      &GetOptions("help"                 => \$help,
  "oldlonc"              => \$oldlonc,  
  "justcheckdaemons"     => \$justcheckdaemons,   "justcheckdaemons"     => \$justcheckdaemons,
  "noemail"              => \$noemail,   "noemail"              => \$noemail,
  "justcheckconnections" => \$justcheckconnections   "justcheckconnections" => \$justcheckconnections,
    "justreload"           => \$justreload
  );   );
     if ($help) { &usage(); return; }      if ($help) { &usage(); return; }
 # --------------------------------- Read loncapa_apache.conf and loncapa.conf  # --------------------------------- Read loncapa_apache.conf and loncapa.conf
Line 601  sub main () { Line 643  sub main () {
     undef $perlvarref;      undef $perlvarref;
     delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed      delete $perlvar{'lonReceipt'}; # remove since sensitive and not needed
     delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed      delete $perlvar{'lonSqlAccess'}; # remove since sensitive and not needed
       chdir($perlvar{'lonDaemons'});
 # --------------------------------------- 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.
     if ('{[[[[lonHostID]]]]}' eq $perlvar{'lonHostID'}) {      if ('{[[[[lonHostID]]]]}' eq $perlvar{'lonHostID'}) {
Line 627  sub main () { Line 669  sub main () {
  exit 1;   exit 1;
     }      }
   
 # ------------------------------------------------------------- Read hosts file  # -------------------------------------------- Force reload of host information
     my $config=IO::File->new("$perlvar{'lonTabDir'}/hosts.tab");      &Apache::lonnet::load_hosts_tab(1);
           &Apache::lonnet::load_domain_tab(1);
     my (%hostname,%hostdom,%hostrole,%spareid);      &Apache::lonnet::get_iphost(1);
     while (my $configline=<$config>) {  
  next if ($configline =~ /^(\#|\s*\$)/);  # ----------------------------------------- Force firewall update for lond port  
  my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);  
  if ($id && $domain && $role && $name && $ip) {      if ((!$justcheckdaemons) && (!$justreload)) {
     $hostname{$id}=$name;          my $now = time;
     $hostdom{$id}=$domain;          my $tmpfile = $perlvar{'lonDaemons'}.'/tmp/lciptables_iphost_'.
     $hostrole{$id}=$role;                        $now.$$.int(rand(10000));
  }          if (open(my $fh,">$tmpfile")) {
               my %iphosts = &Apache::lonnet::get_iphost();
               foreach my $key (keys(%iphosts)) {
                   print $fh "$key\n";
               }
               close($fh);
               my $execpath = $perlvar{'lonDaemons'}.'/lciptables';
               system("$execpath $tmpfile");
               unlink($fh);
           }
     }      }
     undef $config;  
   
 # ------------------------------------------------------ Read spare server file  
     $config=IO::File->new("$perlvar{'lonTabDir'}/spare.tab");  
       
     while (my $configline=<$config>) {  
  chomp($configline);  
  if (($configline) && ($configline ne $perlvar{'lonHostID'})) {  
     $spareid{$configline}=1;  
  }  
     }  
     undef $config;  
   
 # ---------------------------------------------------------------- Start report  # ---------------------------------------------------------------- Start report
   
Line 661  sub main () { Line 700  sub main () {
   
   
     my $fh;      my $fh;
     if (!$justcheckdaemons && !$justcheckconnections) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
  $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);   $fh=&start_logging();
   
  &log_machine_info($fh);   &log_machine_info($fh);
  &clean_tmp($fh);   &clean_tmp($fh);
  &clean_lonIDs($fh);   &clean_lonIDs($fh);
  &check_httpd_logs($fh);   &check_httpd_logs($fh);
  &rotate_lonnet_logs($fh);   &rotate_lonnet_logs($fh);
    &rotate_other_logs($fh);
     }      }
     if (!$justcheckconnections) {      if (!$justcheckconnections && !$justreload) {
    &checkon_daemon($fh,'lonmemcached',40000);
  &checkon_daemon($fh,'lonsql',200000);   &checkon_daemon($fh,'lonsql',200000);
  &checkon_daemon($fh,'lond',40000,1);   if ( &checkon_daemon($fh,'lond',40000,'USR1') eq 'running') {
  my $args='new';      &checkon_daemon($fh,'lond',40000,'USR2');
  if ($oldlonc) { $args = ''; }   }
  &checkon_daemon($fh,'lonc',40000,1,$args);   &checkon_daemon($fh,'lonc',40000,'USR1');
  &checkon_daemon($fh,'lonhttpd',40000);          &checkon_daemon($fh,'lonmaxima',40000);
           &checkon_daemon($fh,'lonr',40000);
       }
       if ($justreload) {
    &checkon_daemon($fh,'lond',40000,'USR2');
    &checkon_daemon($fh,'lonc',40000,'USR2');
     }      }
     if (!$justcheckdaemons) {      if ($justcheckconnections) {
  &test_connections($fh,\%hostname);   &test_connections($fh);
     }      }
     if (!$justcheckdaemons && !$justcheckconnections) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
  &check_delayed_msg($fh);   &check_delayed_msg($fh);
  &finish_logging($fh);   &finish_logging($fh);
  &log_simplestatus();   &log_simplestatus();

Removed from v.1.52  
changed lines
  Added in v.1.81


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.