Diff for /loncom/loncron between versions 1.123 and 1.127

version 1.123, 2020/05/06 14:31:59 version 1.127, 2021/02/02 20:53:05
Line 46  use GDBM_File; Line 46  use GDBM_File;
 use Storable qw(thaw);  use Storable qw(thaw);
 use File::ReadBackwards;  use File::ReadBackwards;
 use File::Copy;  use File::Copy;
   use GDBM_File qw(GDBM_READER);
   use Storable qw(thaw nfreeze);
 use Sys::Hostname::FQDN();  use Sys::Hostname::FQDN();
   
 #globals  #globals
Line 80  sub rotate_logfile { Line 82  sub rotate_logfile {
  rename("$file.2","$file.3");   rename("$file.2","$file.3");
  rename("$file.1","$file.2");   rename("$file.1","$file.2");
  rename("$file","$file.1");   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') {      if ($daemon eq 'lonc') {
  $progname='loncnew';    $progname='loncnew';
     }      }
     my $error_fname="$perlvar{'lonDaemons'}/logs/${daemon}_errors";      my $error_fname="$perlvar{'lonDaemons'}/logs/${daemon}_errors";
     &rotate_logfile($error_fname,$fh,'error logs');      &rotate_logfile($error_fname,$fh,'error logs');
Line 121  sub checkon_daemon { Line 123  sub checkon_daemon {
     if ($fh) {      if ($fh) {
         if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){          if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
     if (open(DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|")) {      if (open(DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|")) {
         while (my $line=<DFH>) {           while (my $line=<DFH>) {
             &log($fh,"$line");              &log($fh,"$line");
             if ($line=~/INFO/) { $notices++; }              if ($line=~/INFO/) { $notices++; }
             if ($line=~/WARNING/) { $notices++; }              if ($line=~/WARNING/) { $notices++; }
Line 132  sub checkon_daemon { Line 134  sub checkon_daemon {
         }          }
         &log($fh,"</tt></p>");          &log($fh,"</tt></p>");
     }      }
       
     my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";      my $pidfile="$perlvar{'lonDaemons'}/logs/$daemon.pid";
        
     my $restartflag=1;      my $restartflag=1;
     my $daemonpid;      my $daemonpid;
     if (-e $pidfile) {      if (-e $pidfile) {
Line 217  sub checkon_daemon { Line 219  sub checkon_daemon {
             }              }
  }   }
     }      }
       
     my $fname="$perlvar{'lonDaemons'}/logs/$daemon.log";      my $fname="$perlvar{'lonDaemons'}/logs/$daemon.log";
     &rotate_logfile($fname,$fh,'logs');      &rotate_logfile($fname,$fh,'logs');
   
Line 230  sub log_machine_info { Line 232  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>");
   
       my $cpucount;
       if (open(PIPE,"lscpu |grep '^CPU(s)' 2>&1 |")) {
           my $info = <PIPE>;
           chomp($info);
           ($cpucount) = ($info =~ /^\QCPU(s):\E\s+(\d+)$/);
           close(PIPE);
       }
       if (!$cpucount) {
           $cpucount = 1;
       }
       my %loadtarget = (
                           error => 4.0*$cpucount,
                           warn  => 2.0*$cpucount,
                           note  => 1.0*$cpucount,
                        );
     open (LOADAVGH,"/proc/loadavg");      open (LOADAVGH,"/proc/loadavg");
     my $loadavg=<LOADAVGH>;      my $loadavg=<LOADAVGH>;
     close (LOADAVGH);      close (LOADAVGH);
        
     &log($fh,"<tt>$loadavg</tt>");      &log($fh,"<tt>$loadavg</tt>");
       
     my @parts=split(/\s+/,$loadavg);      my @parts=split(/\s+/,$loadavg);
     if ($parts[1]>4.0) {      if ($parts[1]>$loadtarget{'error'}) {
  $errors++;   $errors++;
     } elsif ($parts[1]>2.0) {      } elsif ($parts[1]>$loadtarget{'warn'}) {
  $warnings++;   $warnings++;
     } elsif ($parts[1]>1.0) {      } elsif ($parts[1]>$loadtarget{'note'}) {
  $notices++;   $notices++;
     }      }
   
Line 250  sub log_machine_info { Line 267  sub log_machine_info {
     &log($fh,"<pre>");      &log($fh,"<pre>");
   
     open (DFH,"df|");      open (DFH,"df|");
     while (my $line=<DFH>) {       while (my $line=<DFH>) {
  &log($fh,&encode_entities($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;
  if ($usage>90) {    if ($usage>90) {
     $warnings++;      $warnings++;
     $notices++;       $notices++;
  } elsif ($usage>80) {   } elsif ($usage>80) {
     $warnings++;      $warnings++;
  } elsif ($usage>60) {   } elsif ($usage>60) {
Line 274  sub log_machine_info { Line 291  sub log_machine_info {
     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++;
     }      }
     close (PSH);      close (PSH);
Line 297  sub start_logging { Line 314  sub start_logging {
     my %simplestatus=();      my %simplestatus=();
     my $now=time;      my $now=time;
     my $date=localtime($now);      my $date=localtime($now);
        
   
     &log($fh,(<<ENDHEADERS));      &log($fh,(<<ENDHEADERS));
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Line 413  sub recursive_clean_tmp { Line 430  sub recursive_clean_tmp {
                 ($cleaned,$old,$removed) =                   ($cleaned,$old,$removed) = 
                      &recursive_clean_tmp($innerdir,$cleaned,$old,$removed,$errors);                       &recursive_clean_tmp($innerdir,$cleaned,$old,$removed,$errors);
                 my @doms = &Apache::lonnet::current_machine_domains();                  my @doms = &Apache::lonnet::current_machine_domains();
                   
                 if (open(my $dirhandle,$fname)) {                  if (open(my $dirhandle,$fname)) {
                     unless (($innerdir eq 'helprequests') ||                      unless (($innerdir eq 'helprequests') ||
                             (($innerdir =~ /^addcourse/) && ($innerdir !~ m{/\d+$}))) {                              (($innerdir =~ /^addcourse/) && ($innerdir !~ m{/\d+$}))) {
                         my @contents = grep {!/^\.\.?$/} readdir($dirhandle);                          my @contents = grep {!/^\.\.?$/} readdir($dirhandle);
                                       join('&&',@contents)."\n";                                            join('&&',@contents)."\n";
                         if (scalar(grep {!/^\.\.?$/} readdir($dirhandle)) == 0) {                          if (scalar(grep {!/^\.\.?$/} readdir($dirhandle)) == 0) {
                             closedir($dirhandle);                              closedir($dirhandle);
                             if ($fname =~ m{^\Q$perlvar{'lonDaemons'}\E/tmp/}) {                              if ($fname =~ m{^\Q$perlvar{'lonDaemons'}\E/tmp/}) {
Line 471  sub recursive_clean_tmp { Line 488  sub recursive_clean_tmp {
                                 }                                  }
                             }                              }
                         } elsif (ref($errors->{failopen}) eq 'ARRAY') {                          } elsif (ref($errors->{failopen}) eq 'ARRAY') {
                             push(@{$errors->{failopen}},$fname);                               push(@{$errors->{failopen}},$fname);
                         }                          }
                     } else {                      } else {
                         if (unlink($fname)) {                          if (unlink($fname)) {
Line 542  sub clean_balanceIDs { Line 559  sub clean_balanceIDs {
     my $cleaned=0;      my $cleaned=0;
     my $active=0;      my $active=0;
     if (-d $perlvar{'lonBalanceDir'}) {      if (-d $perlvar{'lonBalanceDir'}) {
         while (my $fname=<$perlvar{'balanceDir'}/*.id>) {          while (my $fname=<$perlvar{'lonBalanceDir'}/*.id>) {
             my ($dev,$ino,$mode,$nlink,              my ($dev,$ino,$mode,$nlink,
                 $uid,$gid,$rdev,$size,                  $uid,$gid,$rdev,$size,
                 $atime,$mtime,$ctime,                  $atime,$mtime,$ctime,
Line 653  sub rotate_lonnet_logs { Line 670  sub rotate_lonnet_logs {
     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,&encode_entities($line,'<>&"'));      &log($fh,&encode_entities($line,'<>&"'));
  }   }
  close (DFH);   close (DFH);
     }      }
     &log($fh,"</pre><h3>Perm Log</h3><pre>");      &log($fh,"</pre><h3>Perm Log</h3><pre>");
       
     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,&encode_entities($line,'<>&"'));      &log($fh,&encode_entities($line,'<>&"'));
  }   }
  close (DFH);   close (DFH);
Line 1032  sub write_serverhomeIDs { Line 1049  sub write_serverhomeIDs {
                 eval {                  eval {
                     local $SIG{ ALRM } = sub { die "TIMEOUT" };                      local $SIG{ ALRM } = sub { die "TIMEOUT" };
                     alarm(10);                      alarm(10);
                     $serverhomeID =                       $serverhomeID =
                         &Apache::lonnet::get_server_homeID($name,1,'loncron');                          &Apache::lonnet::get_server_homeID($name,1,'loncron');
                     alarm(0);                      alarm(0);
                 };                  };
Line 1167  sub write_hostips { Line 1184  sub write_hostips {
   
 sub clean_nosslverify {  sub clean_nosslverify {
     my ($fh) = @_;      my ($fh) = @_;
     my %unlinked;       my %unlinked;
     if (-d "$perlvar{'lonSockDir'}/nosslverify") {      if (-d "$perlvar{'lonSockDir'}/nosslverify") {
         if (opendir(my $dh,"$perlvar{'lonSockDir'}/nosslverify")) {          if (opendir(my $dh,"$perlvar{'lonSockDir'}/nosslverify")) {
             while (my $fname=readdir($dh)) {              while (my $fname=readdir($dh)) {
Line 1329  sub write_hosttypes { Line 1346  sub write_hosttypes {
                 foreach my $lonid (sort(keys(%hostdom))) {                  foreach my $lonid (sort(keys(%hostdom))) {
                     my $type = 'other';                      my $type = 'other';
                     if ($hostdom{$lonid} eq $dom) {                      if ($hostdom{$lonid} eq $dom) {
                         $type = 'dom';                           $type = 'dom';
                     } elsif ($intdom{$lonid} eq $internetdom) {                      } elsif ($intdom{$lonid} eq $internetdom) {
                         $type = 'intdom';                          $type = 'intdom';
                     }                      }
Line 1608  sub main () { Line 1625  sub main () {
         &Apache::lonnet::get_iphost(1,$nomemcache);          &Apache::lonnet::get_iphost(1,$nomemcache);
     }      }
   
 # ----------------------------------------- Force firewall update for lond port    # ----------------------------------------- Force firewall update for lond port
   
     if ((!$justcheckdaemons) && (!$justreload)) {      if ((!$justcheckdaemons) && (!$justreload)) {
         my $now = time;          my $now = time;
Line 1623  sub main () { Line 1640  sub main () {
             if (&LONCAPA::try_to_lock('/tmp/lock_lciptables')) {              if (&LONCAPA::try_to_lock('/tmp/lock_lciptables')) {
                 my $execpath = $perlvar{'lonDaemons'}.'/lciptables';                  my $execpath = $perlvar{'lonDaemons'}.'/lciptables';
                 system("$execpath $tmpfile");                  system("$execpath $tmpfile");
                 unlink('/tmp/lock_lciptables');  # Remove the lock file.                   unlink('/tmp/lock_lciptables');  # Remove the lock file.
             }              }
             unlink($tmpfile);              unlink($tmpfile);
         }          }
Line 1635  sub main () { Line 1652  sub main () {
     $warnings=0;      $warnings=0;
     $notices=0;      $notices=0;
   
   
     my $fh;      my $fh;
     if (!$justcheckdaemons && !$justcheckconnections && !$justreload && !$justiptables) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload && !$justiptables) {
  $fh=&start_logging();   $fh=&start_logging();

Removed from v.1.123  
changed lines
  Added in v.1.127


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