lonsql
Log
';
+
+ if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
+ open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");
+ while ($line=) {
+ print $fh "$line";
+ if ($line=~/INFO/) { $notices++; }
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $warnings++; }
+ };
+ close (DFH);
+ }
+ print $fh "
";
+
+ my $lonsqlfile="$perlvar{'lonDaemons'}/logs/lonsql.pid";
+
+ if (-e $lonsqlfile) {
+ my $lfh=IO::File->new("$lonsqlfile");
+ my $lonsqlpid=<$lfh>;
+ chomp($lonsqlpid);
+ if (kill 0 => $lonsqlpid) {
+ print $fh "lonsql at pid $lonsqlpid responding
";
+ } else {
+ $errors++; $errors++;
+ print $fh "lonsql at pid $lonsqlpid not responding
";
+ }
+ } else {
+ $errors++;
+ print $fh "lonsql not running, trying to start
";
+ system("$perlvar{'lonDaemons'}/lonsql");
+ sleep 120;
+ if (-e $lonsqlfile) {
+ print $fh "Seems like it started ...";
+ my $lfh=IO::File->new("$lonsqlfile");
+ my $lonsqlpid=<$lfh>;
+ chomp($lonsqlpid);
+ sleep 30;
+ if (kill 0 => $lonsqlpid) {
+ print $fh "
lonsql at pid $lonsqlpid responding
";
+ } else {
+ $errors++; $errors++;
+ print $fh "lonsql at pid $lonsqlpid not responding
";
+ print $fh "Give it one more try ...";
+ system("$perlvar{'lonDaemons'}/lonsql");
+ sleep 120;
+ }
+ } else {
+ print $fh "Seems like that did not work!
";
+ $errors++;
+ }
+ if (-e "$perlvar{'lonDaemons'}/logs/lonsql.log"){
+ print $fh "
";
+ open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonsql.log|");
+ while ($line=) {
+ print $fh "$line";
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $notices++; }
+ };
+ close (DFH);
+ print $fh "
";
+ }
+ }
+
+ $fname="$perlvar{'lonDaemons'}/logs/lonsql.log";
+
+ my ($dev,$ino,$mode,$nlink,
+ $uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,
+ $blksize,$blocks)=stat($fname);
+
+ if ($size>40000) {
+ print $fh "Rotating logs ...";
+ rename("$fname.2","$fname.3");
+ rename("$fname.1","$fname.2");
+ rename("$fname","$fname.1");
+ }
+
+ &errout($fh);
+}
# ------------------------------------------------------------------------ lond
print $fh '
lond
Log
';
@@ -209,8 +294,8 @@ open (DFH,"tail -n100 $perlvar{'lonDaemo
while ($line=) {
print $fh "$line";
if ($line=~/INFO/) { $notices++; }
- if ($line=~/WARNING/) { $warnings++; }
- if ($line=~/CRITICAL/) { $errors++; }
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $warnings++; }
};
close (DFH);
}
@@ -218,17 +303,38 @@ print $fh "
";
my $londfile="$perlvar{'lonDaemons'}/logs/lond.pid";
-if (-e $londfile) {
+my $restartflag=1;
+if (-e $londfile) {
my $lfh=IO::File->new("$londfile");
my $londpid=<$lfh>;
chomp($londpid);
if (kill 0 => $londpid) {
print $fh "lond at pid $londpid responding
";
+ $restartflag=0;
} else {
- $errors++; $errors++;
+ $errors++;
print $fh "lond at pid $londpid not responding
";
+ # Intelligently handle this.
+ # Possibility #1: there is no process
+ # Solution: remove .pid file and restart
+ if (getpgrp($londpid)==-1) {
+ unlink($londfile);
+ $restartflag=1;
+ }
+ else {
+ # Possibility #2: there is a zombie process
+ # Possibility #3: there is a live process that is not responding
+ # for an unknown reason
+ # Solution: kill process, remove .pid and restart
+ `killall -9 lond`;
+ unlink($londfile);
+ $restartflag=1;
+ }
+ print $fh
+ "Deciding to clean up stale .pid file and restart lond
";
}
-} else {
+}
+if ($restartflag==1) {
$errors++;
print $fh "lond not running, trying to start
";
system("$perlvar{'lonDaemons'}/lond");
@@ -257,9 +363,8 @@ if (-e $londfile) {
open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lond.log|");
while ($line=) {
print $fh "$line";
- if ($line=~/INFO/) { $notices++; }
- if ($line=~/WARNING/) { $warnings++; }
- if ($line=~/CRITICAL/) { $errors++; }
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $notices++; }
};
close (DFH);
print $fh "";
@@ -290,8 +395,8 @@ open (DFH,"tail -n100 $perlvar{'lonDaemo
while ($line=) {
print $fh "$line";
if ($line=~/INFO/) { $notices++; }
- if ($line=~/WARNING/) { $warnings++; }
- if ($line=~/CRITICAL/) { $errors++; }
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $warnings++; }
};
close (DFH);
}
@@ -299,6 +404,7 @@ print $fh "";
my $loncfile="$perlvar{'lonDaemons'}/logs/lonc.pid";
+$restartflag=1;
if (-e $loncfile) {
my $lfh=IO::File->new("$loncfile");
my $loncpid=<$lfh>;
@@ -306,11 +412,31 @@ if (-e $loncfile) {
if (kill 0 => $loncpid) {
print $fh "lonc at pid $loncpid responding, sending USR1
";
kill USR1 => $loncpid;
+ $restartflag=0;
} else {
- $errors++; $errors++;
+ $errors++;
print $fh "lonc at pid $loncpid not responding
";
+ # Intelligently handle this.
+ # Possibility #1: there is no process
+ # Solution: remove .pid file and restart
+ if (getpgrp($loncpid)==-1) {
+ unlink($loncfile);
+ $restartflag=1;
+ }
+ else {
+ # Possibility #2: there is a zombie process
+ # Possibility #3: there is a live process that is not responding
+ # for an unknown reason
+ # Solution: kill process, remove .pid and restart
+ `killall -9 lonc`;
+ unlink($loncfile);
+ $restartflag=1;
+ }
+ print $fh
+ "Deciding to clean up stale .pid file and restart lonc
";
}
-} else {
+}
+if ($restartflag==1) {
$errors++;
print $fh "lonc not running, trying to start
";
system("$perlvar{'lonDaemons'}/lonc");
@@ -339,9 +465,8 @@ if (-e $loncfile) {
open (DFH,"tail -n100 $perlvar{'lonDaemons'}/logs/lonc.log|");
while ($line=) {
print $fh "$line";
- if ($line=~/INFO/) { $notices++; }
- if ($line=~/WARNING/) { $warnings++; }
- if ($line=~/CRITICAL/) { $errors++; }
+ if ($line=~/WARNING/) { $notices++; }
+ if ($line=~/CRITICAL/) { $notices++; }
};
close (DFH);
print $fh "";