[LON-CAPA-cvs] cvs: loncom /init.d loncontrol
albertel
lon-capa-cvs@mail.lon-capa.org
Tue, 16 Sep 2003 21:01:39 -0000
albertel Tue Sep 16 17:01:39 2003 EDT
Modified files:
/loncom/init.d loncontrol
Log:
-prettier and more effective at stopping daemons
Index: loncom/init.d/loncontrol
diff -u loncom/init.d/loncontrol:1.10 loncom/init.d/loncontrol:1.11
--- loncom/init.d/loncontrol:1.10 Mon Feb 3 13:03:52 2003
+++ loncom/init.d/loncontrol Tue Sep 16 17:01:39 2003
@@ -22,17 +22,47 @@
$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 "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 "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";