#!/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>