--- loncom/init.d/loncontrol 2002/05/11 21:34:23 1.7 +++ loncom/init.d/loncontrol 2003/12/18 21:23:01 1.15 @@ -5,18 +5,14 @@ # Startup script for the LON-CAPA network processes # # YEAR=2000 -# 10/25 Scott Harrison # YEAR=2001 -# 10/2 Scott Harrison # YEAR=2002 -# 5/11 Scott Harrison # chkconfig: 345 95 5 -# description: LON-CAPA is an knowledge network server. It is used to +# 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/access.conf # config: /etc/httpd/conf/loncapa.conf # config: /home/httpd/lonTabs/hosts.tab # config: /home/httpd/lonTabs/spare.tab @@ -26,17 +22,57 @@ $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=; + 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 "restart") or ($command eq "reload")) { print 'Restarting LON-CAPA'."\n"; print 'Ending LON-CAPA client and daemon processes'."\n"; - print `su -c '/bin/kill \`/bin/cat /home/httpd/perl/logs/*.pid\`' www`; + 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' www"); } +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") { print 'Stopping LON-CAPA'."\n"; - print `su -c '/bin/kill \`/bin/cat /home/httpd/perl/logs/*.pid\`' www`; + foreach my $daemon ('lonsql','lond','lonc','lonhttpd') { + &stop_daemon($daemon); + } } elsif ($command eq "start") { print 'Starting LON-CAPA'."\n"; @@ -44,6 +80,12 @@ elsif ($command eq "start") { "\n"; system("su -c '/home/httpd/perl/loncron' www"); } +elsif ($command eq "startnew") { + 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") { $response=`/bin/cat /home/httpd/perl/logs/*.pid 2>&1`; if ($response=~/No such file or directory/) {