[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";