--- loncom/loncron 2004/05/11 20:19:46 1.48
+++ loncom/loncron 2004/05/11 21:14:23 1.50
@@ -2,7 +2,7 @@
# Housekeeping program, started by cron, loncontrol and loncron.pl
#
-# $Id: loncron,v 1.48 2004/05/11 20:19:46 albertel Exp $
+# $Id: loncron,v 1.50 2004/05/11 21:14:23 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,6 +36,7 @@ use LONCAPA::Configuration;
use IO::File;
use IO::Socket;
use HTML::Entities;
+use Getopt::Long;
#globals
use vars qw (%perlvar %simplestatus $errors $warnings $notices $totalcount);
@@ -76,9 +77,9 @@ ENDERROUT
}
sub start_daemon {
- my ($fh,$daemon,$pidfile) = @_;
+ my ($fh,$daemon,$pidfile,$args) = @_;
my $progname=$daemon;
- if ($daemon eq 'lonc' && $ARGV[0] eq 'new') {
+ if ($daemon eq 'lonc' && $args eq 'new') {
$progname='loncnew';
print "new ";
}
@@ -102,7 +103,7 @@ sub start_daemon {
}
sub checkon_daemon {
- my ($fh,$daemon,$maxsize,$sendusr1)=@_;
+ my ($fh,$daemon,$maxsize,$sendusr1,$args)=@_;
&log($fh,'
'.$daemon.'
Log
');
printf("%-10s ",$daemon);
@@ -151,7 +152,7 @@ sub checkon_daemon {
'
');
&log($fh,"$daemon not running, trying to start
");
- if (&start_daemon($fh,$daemon,$pidfile)) {
+ if (&start_daemon($fh,$daemon,$pidfile,$args)) {
&log($fh,"$daemon at pid $daemonpid responding
");
$simplestatus{$daemon}='restarted';
print "started\n";
@@ -160,7 +161,7 @@ sub checkon_daemon {
&log($fh,"$daemon at pid $daemonpid not responding
");
&log($fh,"
Give it one more try ...
");
print " ";
- if (&start_daemon($fh,$daemon,$pidfile)) {
+ if (&start_daemon($fh,$daemon,$pidfile,$args)) {
&log($fh,"$daemon at pid $daemonpid responding
");
$simplestatus{$daemon}='restarted';
print "started\n";
@@ -450,22 +451,29 @@ sub test_connections {
&log($fh,'
Connections
');
print "testing connections\n";
&log($fh,"");
+ my ($good,$bad)=(0,0);
foreach my $tryserver (sort(keys(%{$hostname}))) {
print(".");
my $result;
my $answer=reply("pong",$tryserver);
if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
$result="ok";
+ $good++;
} else {
$result=$answer;
$warnings++;
- if ($answer eq 'con_lost') { $warnings++; }
+ if ($answer eq 'con_lost') {
+ $bad++;
+ $warnings++;
+ } else {
+ $good++; #self connection
+ }
}
if ($answer =~ /con_lost/) { print(" $tryserver down\n"); }
&log($fh,"$tryserver | $result |
\n");
}
&log($fh,"
");
-
+ print "\n$good good, $bad bad connections\n";
&errout($fh);
}
@@ -545,8 +553,36 @@ sub send_mail {
system("metasend -b -t $emailto -s '$subj' -f $statusdir/index.html -m text/html");
}
+sub usage {
+ print(< \$help,
+ "oldlonc" => \$oldlonc,
+ "justcheckdaemons" => \$justcheckdaemons,
+ "noemail" => \$noemail,
+ "justcheckconnections" => \$justcheckconnections
+ );
+ if ($help) { &usage(); return; }
# --------------------------------- Read loncapa_apache.conf and loncapa.conf
my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
%perlvar=%{$perlvarref};
@@ -584,7 +620,7 @@ sub main () {
my (%hostname,%hostdom,%hostrole,%spareid);
while (my $configline=<$config>) {
- next if ($configline =~ /^(\#|\s*$)/);
+ next if ($configline =~ /^(\#|\s*\$)/);
my ($id,$domain,$role,$name,$ip,$domdescr)=split(/:/,$configline);
if ($id && $domain && $role && $name && $ip) {
$hostname{$id}=$name;
@@ -611,25 +647,35 @@ sub main () {
$warnings=0;
$notices=0;
- my $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
-
- &log_machine_info($fh);
- &clean_tmp($fh);
- &clean_lonIDs($fh);
- &check_httpd_logs($fh);
- &rotate_lonnet_logs($fh);
- &checkon_daemon($fh,'lonsql',200000);
- &checkon_daemon($fh,'lond',40000,1);
- &checkon_daemon($fh,'lonc',40000,1);
- &checkon_daemon($fh,'lonhttpd',40000);
-
- &test_connections($fh,\%hostname);
- &check_delayed_msg($fh);
-
- &finish_logging($fh);
- &log_simplestatus();
- if ($totalcount>200) { &send_mail(); }
+ my $fh;
+ if (!$justcheckdaemons && !$justcheckconnections) {
+ $fh=&start_logging(\%hostdom,\%hostrole,\%hostname,\%spareid);
+
+ &log_machine_info($fh);
+ &clean_tmp($fh);
+ &clean_lonIDs($fh);
+ &check_httpd_logs($fh);
+ &rotate_lonnet_logs($fh);
+ }
+ if (!$justcheckconnections) {
+ &checkon_daemon($fh,'lonsql',200000);
+ &checkon_daemon($fh,'lond',40000,1);
+ my $args='new';
+ if ($oldlonc) { $args = ''; }
+ &checkon_daemon($fh,'lonc',40000,1,$args);
+ &checkon_daemon($fh,'lonhttpd',40000);
+ }
+ if (!$justcheckdaemons) {
+ &test_connections($fh,\%hostname);
+ }
+ if (!$justcheckdaemons && !$justcheckconnections) {
+ &check_delayed_msg($fh);
+ &finish_logging($fh);
+ &log_simplestatus();
+
+ if ($totalcount>200 && !$noemail) { &send_mail(); }
+ }
}
&main();