Diff for /loncom/loncron between versions 1.52 and 1.60

version 1.52, 2004/06/04 19:29:31 version 1.60, 2005/06/13 19:54:28
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 (kill 0 => $daemonpid) {   if (kill 0 => $daemonpid) {
     return 1;      return 1;
  } else {   } else {
Line 111  sub start_daemon { Line 110  sub start_daemon {
 }  }
   
 sub checkon_daemon {  sub checkon_daemon {
     my ($fh,$daemon,$maxsize,$sendusr1,$args)=@_;      my ($fh,$daemon,$maxsize,$send,$args)=@_;
   
     &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 137  sub checkon_daemon { Line 136  sub checkon_daemon {
  chomp($daemonpid);   chomp($daemonpid);
  if (kill 0 => $daemonpid) {   if (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') {
    print "reloaded\n";
       } else {
    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 156  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>");
   
Line 260  sub log_machine_info { Line 266  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 463  sub test_connections { Line 469  sub test_connections {
     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("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 554  sub log_simplestatus { Line 560  sub log_simplestatus {
 sub send_mail {  sub send_mail {
     print "sending mail\n";      print "sending mail\n";
     my $emailto="$perlvar{'lonAdmEMail'}";      my $emailto="$perlvar{'lonAdmEMail'}";
     if ($totalcount>1000) {      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 581  Options: Line 587  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 ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections,
    $justreload);
     &GetOptions("help"                 => \$help,      &GetOptions("help"                 => \$help,
  "oldlonc"              => \$oldlonc,   "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 633  sub main () { Line 645  sub main () {
     my (%hostname,%hostdom,%hostrole,%spareid);      my (%hostname,%hostdom,%hostrole,%spareid);
     while (my $configline=<$config>) {      while (my $configline=<$config>) {
  next if ($configline =~ /^(\#|\s*\$)/);   next if ($configline =~ /^(\#|\s*\$)/);
  my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);   my ($id,$domain,$role,$name)=split(/:/,$configline);
  if ($id && $domain && $role && $name && $ip) {   if ($id && $domain && $role && $name) {
       $name=~s/\s//g;
     $hostname{$id}=$name;      $hostname{$id}=$name;
     $hostdom{$id}=$domain;      $hostdom{$id}=$domain;
     $hostrole{$id}=$role;      $hostrole{$id}=$role;
Line 661  sub main () { Line 674  sub main () {
   
   
     my $fh;      my $fh;
     if (!$justcheckdaemons && !$justcheckconnections) {      if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
  $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);   $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
   
  &log_machine_info($fh);   &log_machine_info($fh);
Line 670  sub main () { Line 683  sub main () {
  &check_httpd_logs($fh);   &check_httpd_logs($fh);
  &rotate_lonnet_logs($fh);   &rotate_lonnet_logs($fh);
     }      }
     if (!$justcheckconnections) {      if (!$justcheckconnections && !$justreload) {
  &checkon_daemon($fh,'lonsql',200000);   &checkon_daemon($fh,'lonsql',200000);
  &checkon_daemon($fh,'lond',40000,1);   &checkon_daemon($fh,'lond',40000,'USR1');
  my $args='new';   my $args='new';
  if ($oldlonc) { $args = ''; }   if ($oldlonc) { $args = ''; }
  &checkon_daemon($fh,'lonc',40000,1,$args);   &checkon_daemon($fh,'lonc',40000,'USR1',$args);
  &checkon_daemon($fh,'lonhttpd',40000);   &checkon_daemon($fh,'lonhttpd',40000);
    &checkon_daemon($fh,'lonmemcached',40000);
       }
       if ($justreload) {
    &checkon_daemon($fh,'lond',40000,'USR2');
    my $args='new';
    if ($oldlonc) { $args = ''; }
    &checkon_daemon($fh,'lonc',40000,'USR2',$args);
     }      }
     if (!$justcheckdaemons) {      if (!$justcheckdaemons && !$justreload) {
  &test_connections($fh,\%hostname);   &test_connections($fh,\%hostname);
     }      }
     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.60


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