File:  [LON-CAPA] / loncom / init.d / loncontrol
Revision 1.19: download - view: text, annotated - select for diffs
Thu Aug 19 18:31:42 2004 UTC (19 years, 8 months ago) by albertel
Branches: MAIN
CVS tags: version_1_2_X, version_1_2_99_0, version_1_2_1, version_1_2_0, version_1_1_99_5, HEAD
- trying to double check after a stop that all daemons are really gone

#!/usr/bin/perl
#
# The LearningOnline Network with CAPA
#
# Startup script for the LON-CAPA network processes
#
# YEAR=2000
# YEAR=2001
# YEAR=2002

# chkconfig: 345 95 5
# description: LON-CAPA is a "network of knowledge".  It is used to
# distribute knowledge resources and instructional management.
# processnames: lonc, lond, lonsql
# pidfiles: /home/httpd/perl/logs/lon*.pid
# config: /etc/httpd/conf/loncapa.conf
# config: /home/httpd/lonTabs/hosts.tab
# config: /home/httpd/lonTabs/spare.tab

$command=$ARGV[0]; $command=~s/[^a-z]//g;

$ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin";
$ENV{'BASH_ENV'}="";

sub stop_daemon {
    my ($daemon,$killallname)=@_;
    my $pidfile="/home/httpd/perl/logs/$daemon.pid";
    
    printf("%-10s ",$daemon);
    if (-e $pidfile) {
	open(PIDFILE,$pidfile);
	my $daemonpid=<PIDFILE>;
	chomp($daemonpid);
	kill TERM => $daemonpid;
	sleep 2;
	if (kill 0 => $daemonpid) {
	    kill KILL => $daemonpid;
	    sleep 2;
	    if (kill 0 => $daemonpid) {
		print("failed to kill");
	    } else {
		print("killed");
	    }
	} else {
	    print("stopped");
	}
    } else {
	print("not running");
    }
    system("killall -q -0 $killallname");
    if ($? == 0) {
	system("killall -q $killallname");
	print(", killed off extraneous processes");
    }
    print("\n");
}

if (($command eq "restartold") or ($command eq "reloadold")) {
    print 'Restarting LON-CAPA'."\n";
    print 'Ending LON-CAPA client and daemon processes'."\n";
    foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
	&stop_daemon($daemon,$daemon);
    }
    print 'Starting LON-CAPA client and daemon processes (please be patient)'.
	"\n";
    system("su www -c '/home/httpd/perl/loncron --oldlonc --justcheckdaemons'");
} elsif (($command eq "restart") or ($command eq "reload")) {
    print 'Restarting LON-CAPA'."\n";
    print 'Ending LON-CAPA client and daemon processes'."\n";
    foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
	my $killallname=$daemon;
	if ($daemon eq 'lonc') { $killallname='loncnew'; }
	&stop_daemon($daemon,$killallname);
    }
    print 'Starting LON-CAPA client and daemon processes (please be patient)'.
	"\n";
    system("su www -c '/home/httpd/perl/loncron --justcheckdaemons'");
} elsif ($command eq "stop") {
    print 'Stopping LON-CAPA'."\n";
    foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
	my $killallname=$daemon;
	if ($daemon eq 'lonc') { $killallname='loncnew'; }
	&stop_daemon($daemon,$killallname);
    }
} elsif ($command eq "startold") {
    print 'Starting LON-CAPA'."\n";
    print 'Starting LON-CAPA client and daemon processes (please be patient)'.
	"\n"; 
    system("su www -c '/home/httpd/perl/loncron --oldlonc --justcheckdaemons'");
} elsif ($command eq "start") {
    print 'Starting LON-CAPA'."\n";
    print 'Starting LON-CAPA client and daemon processes (please be patient)'.
	"\n"; 
    system("su www -c '/home/httpd/perl/loncron --justcheckdaemons'");
} elsif ($command eq "status") {
    $response=`/bin/cat /home/httpd/perl/logs/*.pid 2>&1`;
    if ($response=~/No such file or directory/) {
	print 'LON-CAPA is not running.'."\n";
    } else {
	print 'LON-CAPA is running.'."\n";
	system("su www -c '/home/httpd/perl/loncron --justcheckconnections'");
    }
} else {
    print 'You need to specify one of restart|stop|start|status on the command line.'."\n";
}

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