File:  [LON-CAPA] / loncom / init.d / loncontrol
Revision 1.18: download - view: text, annotated - select for diffs
Tue May 11 21:22:04 2004 UTC (19 years, 11 months ago) by albertel
Branches: MAIN
CVS tags: version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, HEAD
- use new argument mode
- re/start now don't test the connections
- status now does a conenction status check

#!/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)=@_;
    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\n"); return;
	    } else {
		print("killed\n"); return;
	    }
	} else {
	    print("stopped\n"); return;
	}
    }
    print("not running\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);
    }
    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') {
	&stop_daemon($daemon);
    }
    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') {
	&stop_daemon($daemon);
    }
} 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>