Diff for /loncom/loncron between versions 1.47 and 1.49

version 1.47, 2004/05/11 19:15:03 version 1.49, 2004/05/11 21:08:55
Line 28 Line 28
 #  #
   
 $|=1;  $|=1;
   use strict;
   
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA::Configuration;  use LONCAPA::Configuration;
   
 use IO::File;  use IO::File;
 use IO::Socket;  use IO::Socket;
 use strict;  use HTML::Entities;
   use Getopt::Long;
 #globals  #globals
 use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount);  use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount);
   
Line 66  sub log { Line 68  sub log {
 sub errout {  sub errout {
    my $fh=shift;     my $fh=shift;
    &log($fh,(<<ENDERROUT));     &log($fh,(<<ENDERROUT));
      <p><table border=2 bgcolor="#CCCCCC">       <table border="2" bgcolor="#CCCCCC">
      <tr><td>Notices</td><td>$notices</td></tr>       <tr><td>Notices</td><td>$notices</td></tr>
      <tr><td>Warnings</td><td>$warnings</td></tr>       <tr><td>Warnings</td><td>$warnings</td></tr>
      <tr><td>Errors</td><td>$errors</td></tr>       <tr><td>Errors</td><td>$errors</td></tr>
      </table><p><a href="#top">Top</a><p>       </table><p><a href="#top">Top</a></p>
 ENDERROUT  ENDERROUT
 }  }
   
Line 84  sub start_daemon { Line 86  sub start_daemon {
     system("$perlvar{'lonDaemons'}/$progname 2>>$perlvar{'lonDaemons'}/logs/${daemon}_errors");      system("$perlvar{'lonDaemons'}/$progname 2>>$perlvar{'lonDaemons'}/logs/${daemon}_errors");
     sleep 2;      sleep 2;
     if (-e $pidfile) {      if (-e $pidfile) {
  &log($fh,"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);
Line 95  sub start_daemon { Line 97  sub start_daemon {
     return 0;      return 0;
  }   }
     }      }
     &log($fh,"Seems like that did not work!<p>");      &log($fh,"<p>Seems like that did not work!</p>");
     $errors++;      $errors++;
     return 0;      return 0;
 }  }
Line 103  sub start_daemon { Line 105  sub start_daemon {
 sub checkon_daemon {  sub checkon_daemon {
     my ($fh,$daemon,$maxsize,$sendusr1)=@_;      my ($fh,$daemon,$maxsize,$sendusr1)=@_;
   
     &log($fh,'<hr><a name="'.$daemon.'"><h2>'.$daemon.'</h2><h3>Log</h3><pre>');      &log($fh,'<hr /><a name="'.$daemon.'" /><h2>'.$daemon.'</h2><h3>Log</h3><p style="white-space: pre;"><tt>');
     printf("%-10s ",$daemon);      printf("%-10s ",$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|");
Line 115  sub checkon_daemon { Line 117  sub checkon_daemon {
  };   };
  close (DFH);   close (DFH);
     }      }
     &log($fh,"</pre>");      &log($fh,"</tt></p>");
           
     my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";      my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";
           
Line 157  sub checkon_daemon { Line 159  sub checkon_daemon {
  } else {   } else {
     $errors++;      $errors++;
     &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");      &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");
     &log($fh,"Give it one more try ...<p>");      &log($fh,"<p>Give it one more try ...</p>");
     print " ";      print " ";
     if (&start_daemon($fh,$daemon,$pidfile)) {      if (&start_daemon($fh,$daemon,$pidfile)) {
  &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");   &log($fh,"<h3>$daemon at pid $daemonpid responding</h3>");
Line 168  sub checkon_daemon { Line 170  sub checkon_daemon {
  $simplestatus{$daemon}='failed';   $simplestatus{$daemon}='failed';
  $errors++; $errors++;   $errors++; $errors++;
  &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");   &log($fh,"<h3>$daemon at pid $daemonpid not responding</h3>");
  &log($fh,"Unable to start $daemon<p>");   &log($fh,"<p>Unable to start $daemon</p>");
     }      }
  }   }
   
Line 181  sub checkon_daemon { Line 183  sub checkon_daemon {
  if ($line=~/CRITICAL/) { $notices++; }   if ($line=~/CRITICAL/) { $notices++; }
     };      };
     close (DFH);      close (DFH);
     &log($fh,"</pre>");      &log($fh,"</pre></p>");
  }   }
     }      }
           
Line 193  sub checkon_daemon { Line 195  sub checkon_daemon {
  $blksize,$blocks)=stat($fname);   $blksize,$blocks)=stat($fname);
           
     if ($size>$maxsize) {      if ($size>$maxsize) {
  &log($fh,"Rotating logs ...<p>");   &log($fh,"<p>Rotating logs ...</p>");
  rename("$fname.2","$fname.3");   rename("$fname.2","$fname.3");
  rename("$fname.1","$fname.2");   rename("$fname.1","$fname.2");
  rename("$fname","$fname.1");   rename("$fname","$fname.1");
Line 205  sub checkon_daemon { Line 207  sub checkon_daemon {
 # --------------------------------------------------------------------- Machine  # --------------------------------------------------------------------- Machine
 sub log_machine_info {  sub log_machine_info {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="machine"><h2>Machine Information</h2>');      &log($fh,'<hr /><a name="machine" /><h2>Machine Information</h2>');
     &log($fh,"<h3>loadavg</h3>");      &log($fh,"<h3>loadavg</h3>");
   
     open (LOADAVGH,"/proc/loadavg");      open (LOADAVGH,"/proc/loadavg");
Line 228  sub log_machine_info { Line 230  sub log_machine_info {
   
     open (DFH,"df|");      open (DFH,"df|");
     while (my $line=<DFH>) {       while (my $line=<DFH>) { 
  &log($fh,"$line");    &log($fh,&encode_entities($line,'<>&"')); 
  @parts=split(/\s+/,$line);   @parts=split(/\s+/,$line);
  my $usage=$parts[4];   my $usage=$parts[4];
  $usage=~s/\W//g;   $usage=~s/\W//g;
Line 252  sub log_machine_info { Line 254  sub log_machine_info {
   
     open (PSH,"ps -aux --cols 140 |");      open (PSH,"ps -aux --cols 140 |");
     while (my $line=<PSH>) {       while (my $line=<PSH>) { 
  &log($fh,"$line");    &log($fh,&encode_entities($line,'<>&"')); 
  $psproc++;   $psproc++;
     }      }
     close (PSH);      close (PSH);
Line 278  sub start_logging { Line 280  sub start_logging {
 <title>LON Status Report $perlvar{'lonHostID'}</title>  <title>LON Status Report $perlvar{'lonHostID'}</title>
 </head>  </head>
 <body bgcolor="#AAAAAA">  <body bgcolor="#AAAAAA">
 <a name="top">  <a name="top" />
 <h1>LON Status Report $perlvar{'lonHostID'}</h1>  <h1>LON Status Report $perlvar{'lonHostID'}</h1>
 <h2>$date ($now)</h2>  <h2>$date ($now)</h2>
 <ol>  <ol>
 <li><a href="#configuration">Configuration</a>  <li><a href="#configuration">Configuration</a></li>
 <li><a href="#machine">Machine Information</a>  <li><a href="#machine">Machine Information</a></li>
 <li><a href="#tmp">Temporary Files</a>  <li><a href="#tmp">Temporary Files</a></li>
 <li><a href="#tokens">Session Tokens</a>  <li><a href="#tokens">Session Tokens</a></li>
 <li><a href="#httpd">httpd</a>  <li><a href="#httpd">httpd</a></li>
 <li><a href="#lonsql">lonsql</a>  <li><a href="#lonsql">lonsql</a></li>
 <li><a href="#lond">lond</a>  <li><a href="#lond">lond</a></li>
 <li><a href="#lonc">lonc</a>  <li><a href="#lonc">lonc</a></li>
 <li><a href="#lonhttpd">lonhttpd</a>  <li><a href="#lonhttpd">lonhttpd</a></li>
 <li><a href="#lonnet">lonnet</a>  <li><a href="#lonnet">lonnet</a></li>
 <li><a href="#connections">Connections</a>  <li><a href="#connections">Connections</a></li>
 <li><a href="#delayed">Delayed Messages</a>  <li><a href="#delayed">Delayed Messages</a></li>
 <li><a href="#errcount">Error Coindex.html.unt</a>  <li><a href="#errcount">Error Count</a></li>
 </ol>  </ol>
 <hr>  <hr />
 <a name="configuration">  <a name="configuration" />
 <h2>Configuration</h2>  <h2>Configuration</h2>
 <h3>PerlVars</h3>  <h3>PerlVars</h3>
 <table border=2>  <table border="2">
 ENDHEADERS  ENDHEADERS
   
     foreach my $varname (sort(keys(%perlvar))) {      foreach my $varname (sort(keys(%perlvar))) {
  &log($fh,"<tr><td>$varname</td><td>$perlvar{$varname}</td></tr>\n");   &log($fh,"<tr><td>$varname</td><td>".
        &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}))) {      foreach my $id (sort(keys(%{$hostname}))) {
  &log($fh,   &log($fh,
     "<tr><td>$id</td><td>".$hostdom->{$id}.      "<tr><td>$id</td><td>".$hostdom->{$id}.
Line 315  ENDHEADERS Line 318  ENDHEADERS
     }      }
     &log($fh,"</table><h3>Spare Hosts</h3><ol>");      &log($fh,"</table><h3>Spare Hosts</h3><ol>");
     foreach my $id (sort(keys(%{$spareid}))) {      foreach my $id (sort(keys(%{$spareid}))) {
  &log($fh,"<li>$id\n");   &log($fh,"<li>$id\n</li>");
     }      }
     &log($fh,"</ol>\n");      &log($fh,"</ol>\n");
     return $fh;      return $fh;
Line 324  ENDHEADERS Line 327  ENDHEADERS
 # --------------------------------------------------------------- clean out tmp  # --------------------------------------------------------------- clean out tmp
 sub clean_tmp {  sub clean_tmp {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="tmp"><h2>Temporary Files</h2>');      &log($fh,'<hr /><a name="tmp" /><h2>Temporary Files</h2>');
     my $cleaned=0;      my $cleaned=0;
     my $old=0;      my $old=0;
     while (my $fname=<$perlvar{'lonDaemons'}/tmp/*>) {      while (my $fname=<$perlvar{'lonDaemons'}/tmp/*>) {
Line 357  sub clean_tmp { Line 360  sub clean_tmp {
 # ------------------------------------------------------------ clean out lonIDs  # ------------------------------------------------------------ clean out lonIDs
 sub clean_lonIDs {  sub clean_lonIDs {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="tokens"><h2>Session Tokens</h2>');      &log($fh,'<hr /><a name="tokens" /><h2>Session Tokens</h2>');
     my $cleaned=0;      my $cleaned=0;
     my $active=0;      my $active=0;
     while (my $fname=<$perlvar{'lonIDsDir'}/*>) {      while (my $fname=<$perlvar{'lonIDsDir'}/*>) {
Line 375  sub clean_lonIDs { Line 378  sub clean_lonIDs {
     $active++;      $active++;
  }   }
     }      }
     &log($fh,"<p>Cleaned up ".$cleaned." stale session token(s).");      &log($fh,"<p>Cleaned up ".$cleaned." stale session token(s).</p>");
     &log($fh,"<h3>$active open session(s)</h3>");      &log($fh,"<h3>$active open session(s)</h3>");
 }  }
   
Line 383  sub clean_lonIDs { Line 386  sub clean_lonIDs {
 # ----------------------------------------------------------------------- httpd  # ----------------------------------------------------------------------- httpd
 sub check_httpd_logs {  sub check_httpd_logs {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="httpd"><h2>httpd</h2><h3>Access Log</h3><pre>');      &log($fh,'<hr /><a name="httpd" /><h2>httpd</h2><h3>Access Log</h3><pre>');
           
     open (DFH,"tail -n25 /etc/httpd/logs/access_log|");      open (DFH,"tail -n25 /etc/httpd/logs/access_log|");
     while (my $line=<DFH>) { &log($fh,"$line") };      while (my $line=<DFH>) { &log($fh,&encode_entities($line,'<>&"')) };
     close (DFH);      close (DFH);
   
     &log($fh,"</pre><h3>Error Log</h3><pre>");      &log($fh,"</pre><h3>Error Log</h3><pre>");
Line 403  sub check_httpd_logs { Line 406  sub check_httpd_logs {
   
 # ---------------------------------------------------------------------- lonnet  # ---------------------------------------------------------------------- lonnet
   
 sub rotate_logs {  sub rotate_lonnet_logs {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="lonnet"><h2>lonnet</h2><h3>Temp Log</h3><pre>');      &log($fh,'<hr /><a name="lonnet" /><h2>lonnet</h2><h3>Temp Log</h3><pre>');
     print "checking logs\n";      print "checking logs\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 (my $line=<DFH>) {    while (my $line=<DFH>) { 
     &log($fh,"$line");      &log($fh,&encode_entities($line,'<>&"'));
  }   }
  close (DFH);   close (DFH);
     }      }
Line 419  sub rotate_logs { Line 422  sub rotate_logs {
     if (-e "$perlvar{'lonDaemons'}/logs/lonnet.perm.log") {      if (-e "$perlvar{'lonDaemons'}/logs/lonnet.perm.log") {
  open(DFH,"tail -n10 $perlvar{'lonDaemons'}/logs/lonnet.perm.log|");   open(DFH,"tail -n10 $perlvar{'lonDaemons'}/logs/lonnet.perm.log|");
  while (my $line=<DFH>) {    while (my $line=<DFH>) { 
     &log($fh,"$line");      &log($fh,&encode_entities($line,'<>&"'));
  }   }
  close (DFH);   close (DFH);
     } else { &log($fh,"No perm log\n") }      } else { &log($fh,"No perm log\n") }
Line 432  sub rotate_logs { Line 435  sub rotate_logs {
  $blksize,$blocks)=stat($fname);   $blksize,$blocks)=stat($fname);
   
     if ($size>40000) {      if ($size>40000) {
  &log($fh,"Rotating logs ...<p>");   &log($fh,"<p>Rotating logs ...</p>");
  rename("$fname.2","$fname.3");   rename("$fname.2","$fname.3");
  rename("$fname.1","$fname.2");   rename("$fname.1","$fname.2");
  rename("$fname","$fname.1");   rename("$fname","$fname.1");
Line 445  sub rotate_logs { Line 448  sub rotate_logs {
 # ----------------------------------------------------------------- Connections  # ----------------------------------------------------------------- Connections
 sub test_connections {  sub test_connections {
     my ($fh,$hostname)=@_;      my ($fh,$hostname)=@_;
     &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);
     foreach my $tryserver (sort(keys(%{$hostname}))) {      foreach my $tryserver (sort(keys(%{$hostname}))) {
  print(".");   print(".");
  my $result;   my $result;
  my $answer=reply("pong",$tryserver);   my $answer=reply("pong",$tryserver);
  if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {   if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
     $result="<b>ok</b>";      $result="<b>ok</b>";
       $good++;
  } else {   } else {
     $result=$answer;      $result=$answer;
     $warnings++;      $warnings++;
     if ($answer eq 'con_lost') { $warnings++; }      if ($answer eq 'con_lost') {
    $bad++;
    $warnings++;
       }
  }   }
  if ($answer =~ /con_lost/) { print(" $tryserver down\n"); }   if ($answer =~ /con_lost/) { print(" $tryserver down\n"); }
  &log($fh,"<tr><td>$tryserver</td><td>$result</td></tr>\n");   &log($fh,"<tr><td>$tryserver</td><td>$result</td></tr>\n");
     }      }
     &log($fh,"</table>");      &log($fh,"</table>");
       print "\n$good good, $bad bad connections\n";
     &errout($fh);      &errout($fh);
 }  }
   
Line 471  sub test_connections { Line 479  sub test_connections {
 # ------------------------------------------------------------ Delayed messages  # ------------------------------------------------------------ Delayed messages
 sub check_delayed_msg {  sub check_delayed_msg {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,'<hr><a name="delayed"><h2>Delayed Messages</h2>');      &log($fh,'<hr /><a name="delayed" /><h2>Delayed Messages</h2>');
     print "checking buffers\n";      print "checking buffers\n";
           
     &log($fh,'<h3>Scanning Permanent Log</h3>');      &log($fh,'<h3>Scanning Permanent Log</h3>');
Line 490  sub check_delayed_msg { Line 498  sub check_delayed_msg {
  if ($sdf eq 'D') { $unsend++; }   if ($sdf eq 'D') { $unsend++; }
     }      }
   
     &log($fh,"Total unsend messages: <b>$unsend</b><p>\n");      &log($fh,"<p>Total unsend messages: <b>$unsend</b></p>\n");
     $warnings=$warnings+5*$unsend;      $warnings=$warnings+5*$unsend;
   
     if ($unsend) { $simplestatus{'unsend'}=$unsend; }      if ($unsend) { $simplestatus{'unsend'}=$unsend; }
     &log($fh,"<h3>Outgoing Buffer</h3>");      &log($fh,"<h3>Outgoing Buffer</h3>\n<pre>");
   
     open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");      open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
     while (my $line=<DFH>) {       while (my $line=<DFH>) { 
  &log($fh,"$line<br>");   &log($fh,&encode_entities($line,'<>&"'));
     }      }
       &log($fh,"</pre>\n");
     close (DFH);      close (DFH);
 }  }
   
 sub finish_logging {  sub finish_logging {
     my ($fh)=@_;      my ($fh)=@_;
     &log($fh,"<a name=errcount>\n");      &log($fh,"<a name='errcount' />\n");
     $totalcount=$notices+4*$warnings+100*$errors;      $totalcount=$notices+4*$warnings+100*$errors;
     &errout($fh);      &errout($fh);
     &log($fh,"<h1>Total Error Count: $totalcount</h1>");      &log($fh,"<h1>Total Error Count: $totalcount</h1>");
     my $now=time;      my $now=time;
     my $date=localtime($now);      my $date=localtime($now);
     &log($fh,"<hr>$date ($now)</body></html>\n");      &log($fh,"<hr />$date ($now)</body></html>\n");
     print "lon-status webpage updated\n";      print "lon-status webpage updated\n";
     $fh->close();      $fh->close();
   
Line 542  sub send_mail { Line 551  sub send_mail {
     system("metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html");      system("metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html");
 }  }
   
   sub usage {
       print(<<USAGE);
   loncron - housekeeping program that checks up on various parts of Lon-CAPA
   
   Options:
      --help     Display help
      --oldlonc  When starting the lonc daemon use 'lonc' not 'loncnew'
      --noemail  Do not send the status email
      --justcheckconnections  Only check the current status of the lonc/d
                                   connections, do not send emails do not
                                   check if the daemons are running, do not
                                   generate lon-status
      --justcheckdaemons      Only check that all of the Lon-CAPA daemons are
                                   running, do not send emails do not
                                   check the lonc/d connections, do not
                                   generate lon-status
                              
   USAGE
   }
   
 # ================================================================ Main Program  # ================================================================ Main Program
 sub main () {  sub main () {
       my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections);
       &GetOptions("help"                 => \$help,
    "oldlonc"              => \$oldlonc,
    "justcheckdaemons"     => \$justcheckdaemons,
    "noemail"              => \$noemail,
    "justcheckconnections" => \$justcheckconnections
    );
       if ($help) { &usage(); return; }
 # --------------------------------- Read loncapa_apache.conf and loncapa.conf  # --------------------------------- Read loncapa_apache.conf and loncapa.conf
     my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');      my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
     %perlvar=%{$perlvarref};      %perlvar=%{$perlvarref};
Line 581  sub main () { Line 618  sub main () {
           
     my (%hostname,%hostdom,%hostrole,%spareid);      my (%hostname,%hostdom,%hostrole,%spareid);
     while (my $configline=<$config>) {      while (my $configline=<$config>) {
    next if ($configline =~ /^(\#|\s*\$)/);
  my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);   my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);
  if ($id && $domain && $role && $name && $ip) {   if ($id && $domain && $role && $name && $ip) {
     $hostname{$id}=$name;      $hostname{$id}=$name;
     $hostdom{$id}=$domain;      $hostdom{$id}=$domain;
     $hostrole{$id}=$role;      $hostrole{$id}=$role;
  } else {  
     if ($configline) {  
 # &logthis("Skipping hosts.tab line -$configline-");  
     }  
  }   }
     }      }
     undef $config;      undef $config;
Line 611  sub main () { Line 645  sub main () {
     $warnings=0;      $warnings=0;
     $notices=0;      $notices=0;
   
     my $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);  
   
     &log_machine_info($fh);  
     &clean_tmp($fh);  
     &clean_lonIDs($fh);  
     &check_httpd_logs($fh);  
     &checkon_daemon($fh,'lonsql',200000);  
     &checkon_daemon($fh,'lond',40000,1);  
     &checkon_daemon($fh,'lonc',40000,1);  
     &checkon_daemon($fh,'lonhttpd',40000);  
       
     &test_connections($fh,\%hostname);  
     &check_delayed_msg($fh);  
   
     &finish_logging($fh);  
     &log_simplestatus();  
   
     if ($totalcount>200) { &send_mail(); }      my $fh;
       if (!$justcheckdaemons && !$justcheckconnections) {
    $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
   
    &log_machine_info($fh);
    &clean_tmp($fh);
    &clean_lonIDs($fh);
    &check_httpd_logs($fh);
    &rotate_lonnet_logs($fh);
       }
       if (!$justcheckconnections) {
    &checkon_daemon($fh,'lonsql',200000);
    &checkon_daemon($fh,'lond',40000,1);
    &checkon_daemon($fh,'lonc',40000,1);
    &checkon_daemon($fh,'lonhttpd',40000);
       }
       if (!$justcheckdaemons) {
    &test_connections($fh,\%hostname);
       }
       if (!$justcheckdaemons && !$justcheckconnections) {
    &check_delayed_msg($fh);
    &finish_logging($fh);
    &log_simplestatus();
   
    if ($totalcount>200 && !$noemail) { &send_mail(); }
       }
 }  }
   
 &main();  &main();

Removed from v.1.47  
changed lines
  Added in v.1.49


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>