version 1.1, 2000/10/26 01:24:23
|
version 1.15, 2003/12/18 21:23:01
|
Line 1
|
Line 1
|
#!/usr/bin/perl |
#!/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; |
$command=$ARGV[0]; $command=~s/[^a-z]//g; |
|
|
# ($euid,$egid,$uid,$gid)=($>,$),$<,$(); |
|
$ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin"; |
$ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin"; |
$ENV{'BASH_ENV'}=""; |
$ENV{'BASH_ENV'}=""; |
|
|
open (IN, "</etc/passwd"); |
sub stop_daemon { |
@lines=<IN>; |
my ($daemon)=@_; |
close IN; |
my $pidfile="/home/httpd/perl/logs/$daemon.pid"; |
for $l (@lines) { |
|
chop $l; |
printf("%-10s ",$daemon); |
@F=split(/\:/,$l); |
if (-e $pidfile) { |
if ($F[0] eq 'www') {$wwwid=$F[2];} |
open(PIDFILE,$pidfile); |
} |
my $daemonpid=<PIDFILE>; |
if ($wwwid!=$<) { |
chomp($daemonpid); |
die("User ID mismatch. This program must be run as user 'www'\n"); |
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 "restart") or ($command eq "reload")) { |
if (($command eq "restart") or ($command eq "reload")) { |
print "Restarting LON-CAPA\n"; |
print 'Restarting LON-CAPA'."\n"; |
($<,$>)=($>,$<); |
print 'Ending LON-CAPA client and daemon processes'."\n"; |
print "Ending LON-CAPA client and daemon processes\n"; |
foreach my $daemon ('lonsql','lond','lonc','lonhttpd') { |
print `/bin/kill \`/bin/cat /home/httpd/perl/logs/*.pid\``; |
&stop_daemon($daemon); |
print "Starting LON-CAPA client and daemon processes (please be patient)\n"; |
} |
system("/home/httpd/perl/loncron"); |
print 'Starting LON-CAPA client and daemon processes (please be patient)'. |
($<,$>)=($>,$<); |
"\n"; |
print "Restarting web server\n"; |
system("su -c '/home/httpd/perl/loncron' www"); |
print `/etc/rc.d/init.d/httpd restart`; |
} |
|
elsif (($command eq "restartnew") or ($command eq "reloadnew")) { |
|
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 -c '/home/httpd/perl/loncron new' www"); |
} |
} |
elsif ($command eq "stop") { |
elsif ($command eq "stop") { |
print "Stopping LON-CAPA\n"; |
print 'Stopping LON-CAPA'."\n"; |
($<,$>)=($>,$<); |
foreach my $daemon ('lonsql','lond','lonc','lonhttpd') { |
print `/bin/kill \`/bin/cat /home/httpd/perl/logs/*.pid\``; |
&stop_daemon($daemon); |
($<,$>)=($>,$<); |
} |
print "Stopping web server\n"; |
|
print `/etc/rc.d/init.d/httpd stop`; |
|
} |
} |
elsif ($command eq "start") { |
elsif ($command eq "start") { |
print "Starting LON-CAPA\n"; |
print 'Starting LON-CAPA'."\n"; |
print "Starting LON-CAPA client and daemon processes (please be patient)\n"; |
print 'Starting LON-CAPA client and daemon processes (please be patient)'. |
($<,$>)=($>,$<); |
"\n"; |
system("/home/httpd/perl/loncron"); |
system("su -c '/home/httpd/perl/loncron' www"); |
($<,$>)=($>,$<); |
} |
print "Starting web server\n"; |
elsif ($command eq "startnew") { |
print `/etc/rc.d/init.d/httpd start`; |
print 'Starting LON-CAPA'."\n"; |
|
print 'Starting LON-CAPA client and daemon processes (please be patient)'. |
|
"\n"; |
|
system("su -c '/home/httpd/perl/loncron new' www"); |
} |
} |
elsif ($command eq "status") { |
elsif ($command eq "status") { |
$response=`/bin/cat /home/httpd/perl/logs/*.pid 2>&1`; |
$response=`/bin/cat /home/httpd/perl/logs/*.pid 2>&1`; |
if ($response=~/No such file or directory/) { |
if ($response=~/No such file or directory/) { |
print "LON-CAPA is not running.\n"; |
print 'LON-CAPA is not running.'."\n"; |
} |
} |
else { |
else { |
print "LON-CAPA is running.\n"; |
print 'LON-CAPA is running.'."\n"; |
} |
} |
} |
} |
else { |
else { |
print "You need to specify restart|stop|start on the command line argument.\n"; |
print 'You need to specify restart|stop|start|status on the command line'. |
|
' argument.'."\n"; |
} |
} |