Annotation of loncom/init.d/loncontrol, revision 1.19

1.1       harris41    1: #!/usr/bin/perl
1.2       harris41    2: #
1.6       harris41    3: # The LearningOnline Network with CAPA
                      4: #
1.2       harris41    5: # Startup script for the LON-CAPA network processes
1.6       harris41    6: #
                      7: # YEAR=2000
                      8: # YEAR=2001
1.7       harris41    9: # YEAR=2002
                     10: 
1.3       harris41   11: # chkconfig: 345 95 5
1.9       harris41   12: # description: LON-CAPA is a "network of knowledge".  It is used to
1.6       harris41   13: # distribute knowledge resources and instructional management.
1.2       harris41   14: # processnames: lonc, lond, lonsql
                     15: # pidfiles: /home/httpd/perl/logs/lon*.pid
1.7       harris41   16: # config: /etc/httpd/conf/loncapa.conf
1.2       harris41   17: # config: /home/httpd/lonTabs/hosts.tab
                     18: # config: /home/httpd/lonTabs/spare.tab
                     19: 
1.1       harris41   20: $command=$ARGV[0]; $command=~s/[^a-z]//g;
                     21: 
                     22: $ENV{'PATH'}="/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin";
                     23: $ENV{'BASH_ENV'}="";
                     24: 
1.11      albertel   25: sub stop_daemon {
1.19    ! albertel   26:     my ($daemon,$killallname)=@_;
1.11      albertel   27:     my $pidfile="/home/httpd/perl/logs/$daemon.pid";
                     28:     
                     29:     printf("%-10s ",$daemon);
                     30:     if (-e $pidfile) {
                     31: 	open(PIDFILE,$pidfile);
                     32: 	my $daemonpid=<PIDFILE>;
                     33: 	chomp($daemonpid);
                     34: 	kill TERM => $daemonpid;
                     35: 	sleep 2;
                     36: 	if (kill 0 => $daemonpid) {
                     37: 	    kill KILL => $daemonpid;
                     38: 	    sleep 2;
                     39: 	    if (kill 0 => $daemonpid) {
1.19    ! albertel   40: 		print("failed to kill");
1.11      albertel   41: 	    } else {
1.19    ! albertel   42: 		print("killed");
1.11      albertel   43: 	    }
                     44: 	} else {
1.19    ! albertel   45: 	    print("stopped");
1.11      albertel   46: 	}
1.19    ! albertel   47:     } else {
        !            48: 	print("not running");
        !            49:     }
        !            50:     system("killall -q -0 $killallname");
        !            51:     if ($? == 0) {
        !            52: 	system("killall -q $killallname");
        !            53: 	print(", killed off extraneous processes");
1.11      albertel   54:     }
1.19    ! albertel   55:     print("\n");
1.11      albertel   56: }
                     57: 
1.16      albertel   58: if (($command eq "restartold") or ($command eq "reloadold")) {
1.6       harris41   59:     print 'Restarting LON-CAPA'."\n";
                     60:     print 'Ending LON-CAPA client and daemon processes'."\n";
1.13      albertel   61:     foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
1.19    ! albertel   62: 	&stop_daemon($daemon,$daemon);
1.11      albertel   63:     }
1.6       harris41   64:     print 'Starting LON-CAPA client and daemon processes (please be patient)'.
                     65: 	"\n";
1.18      albertel   66:     system("su www -c '/home/httpd/perl/loncron --oldlonc --justcheckdaemons'");
1.16      albertel   67: } elsif (($command eq "restart") or ($command eq "reload")) {
1.12      albertel   68:     print 'Restarting LON-CAPA'."\n";
                     69:     print 'Ending LON-CAPA client and daemon processes'."\n";
1.13      albertel   70:     foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
1.19    ! albertel   71: 	my $killallname=$daemon;
        !            72: 	if ($daemon eq 'lonc') { $killallname='loncnew'; }
        !            73: 	&stop_daemon($daemon,$killallname);
1.12      albertel   74:     }
                     75:     print 'Starting LON-CAPA client and daemon processes (please be patient)'.
                     76: 	"\n";
1.18      albertel   77:     system("su www -c '/home/httpd/perl/loncron --justcheckdaemons'");
1.16      albertel   78: } elsif ($command eq "stop") {
1.6       harris41   79:     print 'Stopping LON-CAPA'."\n";
1.13      albertel   80:     foreach my $daemon ('lonsql','lond','lonc','lonhttpd') {
1.19    ! albertel   81: 	my $killallname=$daemon;
        !            82: 	if ($daemon eq 'lonc') { $killallname='loncnew'; }
        !            83: 	&stop_daemon($daemon,$killallname);
1.11      albertel   84:     }
1.16      albertel   85: } elsif ($command eq "startold") {
1.6       harris41   86:     print 'Starting LON-CAPA'."\n";
                     87:     print 'Starting LON-CAPA client and daemon processes (please be patient)'.
                     88: 	"\n"; 
1.18      albertel   89:     system("su www -c '/home/httpd/perl/loncron --oldlonc --justcheckdaemons'");
1.16      albertel   90: } elsif ($command eq "start") {
1.12      albertel   91:     print 'Starting LON-CAPA'."\n";
                     92:     print 'Starting LON-CAPA client and daemon processes (please be patient)'.
                     93: 	"\n"; 
1.18      albertel   94:     system("su www -c '/home/httpd/perl/loncron --justcheckdaemons'");
1.16      albertel   95: } elsif ($command eq "status") {
1.1       harris41   96:     $response=`/bin/cat /home/httpd/perl/logs/*.pid 2>&1`;
                     97:     if ($response=~/No such file or directory/) {
1.6       harris41   98: 	print 'LON-CAPA is not running.'."\n";
1.18      albertel   99:     } else {
1.6       harris41  100: 	print 'LON-CAPA is running.'."\n";
1.18      albertel  101: 	system("su www -c '/home/httpd/perl/loncron --justcheckconnections'");
1.1       harris41  102:     }
1.16      albertel  103: } else {
1.18      albertel  104:     print 'You need to specify one of restart|stop|start|status on the command line.'."\n";
1.1       harris41  105: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>