Diff for /loncom/loncron between versions 1.59 and 1.65

version 1.59, 2005/05/26 20:25:00 version 1.65, 2006/01/28 10:03:37
Line 45  my $statusdir="/home/httpd/html/lon-stat Line 45  my $statusdir="/home/httpd/html/lon-stat
   
 # -------------------------------------------------- Non-critical communication  # -------------------------------------------------- Non-critical communication
 sub reply {  sub reply {
     my ($cmd,$server)=@_;      my ($cmd,$server,$hostname)=@_;
     my $peerfile="$perlvar{'lonSockDir'}/$server";      my $peerfile="$perlvar{'lonSockDir'}/".$hostname->{$server};
     my $client=IO::Socket::UNIX->new(Peer    =>"$peerfile",      my $client=IO::Socket::UNIX->new(Peer    =>"$peerfile",
                                      Type    => SOCK_STREAM,                                       Type    => SOCK_STREAM,
                                      Timeout => 10)                                       Timeout => 10)
        or return "con_lost";         or return "con_lost";
     print $client "$cmd\n";      print $client "sethost:$server:$cmd\n";
     my $answer=<$client>;      my $answer=<$client>;
     chomp($answer);      chomp($answer);
     if (!$answer) { $answer="con_lost"; }      if (!$answer) { $answer="con_lost"; }
Line 92  sub start_daemon { Line 92  sub start_daemon {
  rename("$error_fname","$error_fname.1");   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 113  sub start_daemon { Line 112  sub start_daemon {
 sub checkon_daemon {  sub checkon_daemon {
     my ($fh,$daemon,$maxsize,$send,$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("%-15s ",$daemon);      printf("%-15s ",$daemon);
     if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){      if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){
Line 135  sub checkon_daemon { Line 135  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 ($send) { &log($fh,", sending $send"); }      if ($send) { &log($fh,", sending $send"); }
     &log($fh,"</h3>");      &log($fh,"</h3>");
Line 143  sub checkon_daemon { Line 143  sub checkon_daemon {
     if ($send eq 'USR2') { kill USR2 => $daemonpid; }      if ($send eq 'USR2') { kill USR2 => $daemonpid; }
     $restartflag=0;      $restartflag=0;
     if ($send eq 'USR2') {      if ($send eq 'USR2') {
    $result = 'reloaded';
  print "reloaded\n";   print "reloaded\n";
     } else {      } else {
    $result = 'running';
  print "running\n";   print "running\n";
     }      }
  } else {   } else {
Line 161  sub checkon_daemon { Line 163  sub checkon_daemon {
  if ($kadaemon eq 'lonmemcached') { $kadaemon='memcached'; }   if ($kadaemon eq 'lonmemcached') { $kadaemon='memcached'; }
  &log($fh,'<br><font color="red">Killall '.$daemon.': '.   &log($fh,'<br><font color="red">Killall '.$daemon.': '.
     `killall $kadaemon 2>&1`.' - ');      `killall $kadaemon 2>&1`.' - ');
  sleep 2;   sleep 1;
  &log($fh,unlink($pidfile).' - '.   &log($fh,unlink($pidfile).' - '.
     `killall -9 $kadaemon 2>&1`.      `killall -9 $kadaemon 2>&1`.
     '</font><br>');      '</font><br>');
Line 170  sub checkon_daemon { Line 172  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 {
     $errors++;      $errors++;
Line 179  sub checkon_daemon { Line 182  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 217  sub checkon_daemon { Line 222  sub checkon_daemon {
     }      }
   
     &errout($fh);      &errout($fh);
       return $result;
 }  }
   
 # --------------------------------------------------------------------- Machine  # --------------------------------------------------------------------- Machine
Line 278  sub log_machine_info { Line 284  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);
 }  }
   
Line 470  sub test_connections { Line 486  sub test_connections {
     foreach my $tryserver (sort(keys(%{$hostname}))) {      foreach my $tryserver (sort(keys(%{$hostname}))) {
  print(".");   print(".");
  my $result;   my $result;
  my $answer=reply("ping",$tryserver);   my $answer=reply("ping",$tryserver,$hostname);
  if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {   if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
     $result="<b>ok</b>";      $result="<b>ok</b>";
     $good++;      $good++;
Line 686  sub main () { Line 702  sub main () {
     }      }
     if (!$justcheckconnections && !$justreload) {      if (!$justcheckconnections && !$justreload) {
  &checkon_daemon($fh,'lonsql',200000);   &checkon_daemon($fh,'lonsql',200000);
  &checkon_daemon($fh,'lond',40000,'USR1');   if ( &checkon_daemon($fh,'lond',40000,'USR1') eq 'running') {
       &checkon_daemon($fh,'lond',40000,'USR2');
    }
  my $args='new';   my $args='new';
  if ($oldlonc) { $args = ''; }   if ($oldlonc) { $args = ''; }
  &checkon_daemon($fh,'lonc',40000,'USR1',$args);   if ( &checkon_daemon($fh,'lonc',40000,'USR1',$args) eq 'running') {
       &checkon_daemon($fh,'lonc',40000,'USR2',$args);
    }
  &checkon_daemon($fh,'lonhttpd',40000);   &checkon_daemon($fh,'lonhttpd',40000);
  &checkon_daemon($fh,'lonmemcached',40000);   &checkon_daemon($fh,'lonmemcached',40000);
     }      }
Line 699  sub main () { Line 719  sub main () {
  if ($oldlonc) { $args = ''; }   if ($oldlonc) { $args = ''; }
  &checkon_daemon($fh,'lonc',40000,'USR2',$args);   &checkon_daemon($fh,'lonc',40000,'USR2',$args);
     }      }
     if (!$justcheckdaemons && !$justreload) {      if ($justcheckconnections) {
  &test_connections($fh,\%hostname);   &test_connections($fh,\%hostname);
     }      }
     if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {

Removed from v.1.59  
changed lines
  Added in v.1.65


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