--- loncom/loncron 2004/06/04 19:29:31 1.52 +++ loncom/loncron 2005/05/26 20:25:00 1.59 @@ -2,7 +2,7 @@ # Housekeeping program, started by cron, loncontrol and loncron.pl # -# $Id: loncron,v 1.52 2004/06/04 19:29:31 albertel Exp $ +# $Id: loncron,v 1.59 2005/05/26 20:25:00 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -111,10 +111,10 @@ sub start_daemon { } sub checkon_daemon { - my ($fh,$daemon,$maxsize,$sendusr1,$args)=@_; + my ($fh,$daemon,$maxsize,$send,$args)=@_; &log($fh,'

'.$daemon.'

Log

'); - printf("%-10s ",$daemon); + printf("%-15s ",$daemon); if (-e "$perlvar{'lonDaemons'}/logs/$daemon.log"){ open (DFH,"tail -n25 $perlvar{'lonDaemons'}/logs/$daemon.log|"); while (my $line=) { @@ -137,11 +137,16 @@ sub checkon_daemon { chomp($daemonpid); if (kill 0 => $daemonpid) { &log($fh,"

$daemon at pid $daemonpid responding"); - if ($sendusr1) { &log($fh,", sending USR1"); } + if ($send) { &log($fh,", sending $send"); } &log($fh,"

"); - if ($sendusr1) { kill USR1 => $daemonpid; } + if ($send eq 'USR1') { kill USR1 => $daemonpid; } + if ($send eq 'USR2') { kill USR2 => $daemonpid; } $restartflag=0; - print "running\n"; + if ($send eq 'USR2') { + print "reloaded\n"; + } else { + print "running\n"; + } } else { $errors++; &log($fh,"

$daemon at pid $daemonpid not responding

"); @@ -152,11 +157,13 @@ sub checkon_daemon { if ($restartflag==1) { $simplestatus{$daemon}='off'; $errors++; + my $kadaemon=$daemon; + if ($kadaemon eq 'lonmemcached') { $kadaemon='memcached'; } &log($fh,'
Killall '.$daemon.': '. - `killall $daemon 2>&1`.' - '); + `killall $kadaemon 2>&1`.' - '); sleep 2; &log($fh,unlink($pidfile).' - '. - `killall -9 $daemon 2>&1`. + `killall -9 $kadaemon 2>&1`. '
'); &log($fh,"

$daemon not running, trying to start

"); @@ -260,7 +267,7 @@ sub log_machine_info { &log($fh,"
");
     my $psproc=0;
 
-    open (PSH,"ps -aux --cols 140 |");
+    open (PSH,"ps aux --cols 140 |");
     while (my $line=) { 
 	&log($fh,&encode_entities($line,'<>&"')); 
 	$psproc++;
@@ -463,7 +470,7 @@ sub test_connections {
     foreach my $tryserver (sort(keys(%{$hostname}))) {
 	print(".");
 	my $result;
-	my $answer=reply("pong",$tryserver);
+	my $answer=reply("ping",$tryserver);
 	if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
 	    $result="ok";
 	    $good++;
@@ -554,12 +561,12 @@ sub log_simplestatus {
 sub send_mail {
     print "sending mail\n";
     my $emailto="$perlvar{'lonAdmEMail'}";
-    if ($totalcount>1000) {
+    if ($totalcount>2500) {
 	$emailto.=",$perlvar{'lonSysEMail'}";
     }
     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) {
 	$result=system("mail -s '$subj' $emailto < $statusdir/index.html");
     }
@@ -581,18 +588,24 @@ Options:
                                 running, do not send emails do not
                                 check the lonc/d connections, do not
                                 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
 }
 
 # ================================================================ Main Program
 sub main () {
-    my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections);
+    my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections,
+	$justreload);
     &GetOptions("help"                 => \$help,
 		"oldlonc"              => \$oldlonc,
 		"justcheckdaemons"     => \$justcheckdaemons,
 		"noemail"              => \$noemail,
-		"justcheckconnections" => \$justcheckconnections
+		"justcheckconnections" => \$justcheckconnections,
+		"justreload"           => \$justreload
 		);
     if ($help) { &usage(); return; }
 # --------------------------------- Read loncapa_apache.conf and loncapa.conf
@@ -633,8 +646,9 @@ sub main () {
     my (%hostname,%hostdom,%hostrole,%spareid);
     while (my $configline=<$config>) {
 	next if ($configline =~ /^(\#|\s*\$)/);
-	my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);
-	if ($id && $domain && $role && $name && $ip) {
+	my ($id,$domain,$role,$name)=split(/:/,$configline);
+	if ($id && $domain && $role && $name) {
+	    $name=~s/\s//g;
 	    $hostname{$id}=$name;
 	    $hostdom{$id}=$domain;
 	    $hostrole{$id}=$role;
@@ -661,7 +675,7 @@ sub main () {
 
 	
     my $fh;
-    if (!$justcheckdaemons && !$justcheckconnections) {
+    if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
 	$fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
 
 	&log_machine_info($fh);
@@ -670,18 +684,25 @@ sub main () {
 	&check_httpd_logs($fh);
 	&rotate_lonnet_logs($fh);
     }
-    if (!$justcheckconnections) {
+    if (!$justcheckconnections && !$justreload) {
 	&checkon_daemon($fh,'lonsql',200000);
-	&checkon_daemon($fh,'lond',40000,1);
+	&checkon_daemon($fh,'lond',40000,'USR1');
 	my $args='new';
 	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,'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);
     }
-    if (!$justcheckdaemons && !$justcheckconnections) {
+    if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
 	&check_delayed_msg($fh);
 	&finish_logging($fh);
 	&log_simplestatus();


500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.