marc        97/09/04 16:59:41

  Added:       src/support apachectl
  Log:
  Add apachectl script for controlling Apache in a way similar to ndc.
  Written from scratch after scanning ndc.
  
  Reviewed by:  Dean Gaudet, Randy Terbush, Paul Sutton, Jim Jagielski
  
  Revision  Changes    Path
  1.1                  apachen/src/support/apachectl
  
  Index: apachectl
  ===================================================================
  #!/bin/sh
  #
  # Apache control script designed to allow an easy command line interface
  # to controlling Apache.  Written by Marc Slemko, 1997/08/23
  # 
  # The exit codes returned are:
  #     0 - operation completed successfully
  #     1 - 
  #     2 - usage error
  #     3 - httpd could not be started
  #     4 - httpd could not be stopped
  #     5 - httpd could not be started during a restart
  #     6 - httpd could not be restarted during a restart
  #     7 - httpd could not be restarted during a graceful restart
  #
  # When multiple arguments are given, only the error from the _last_
  # one is reported.  Run "apachectl help" for usage info
  #
  #
  # |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
  # --------------------                              --------------------
  # 
  # the path to your PID file
  PIDFILE=/usr/local/etc/httpd/logs/httpd.pid
  #
  # the path to your httpd binary
  HTTPD=/usr/local/etc/httpd/src/httpd
  #
  # a command that outputs a formatted text version of the HTML at the
  # url given on the command line.  Designed for lynx, however other
  # programs may work.  
  LYNX="lynx -dump"
  #
  # the URL to your server's mod_status status page.  If you do not
  # have one, then status and fullstatus will not work.
  STATUSURL="http://localhost/server-status";
  #
  # --------------------                              --------------------
  # ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||
  
  ERROR=0
  ARGV="$@"
  if [ "x$ARGV" = "x" ] ; then 
      ARGS="help"
  fi
  
  for ARG in $@ $ARGS
  do
      # check for pidfile
      if [ -f $PIDFILE ] ; then
        PID=`cat $PIDFILE`
        PS=`ps -p $PID | tail -1 | grep $PID`
        if [ "x$PS" = "x" ]; then
            STATUS="httpd (pid $PID?) not running"
            RUNNING=0
        else
            STATUS="httpd (pid $PID) running"
            RUNNING=1
        fi
      else
        STATUS="httpd (no pid file) not running"
        RUNNING=0
      fi
  
      case $ARG in
      start)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: httpd (pid $PID) already running"
            continue
        fi
        if $HTTPD ; then
            echo "$0 $ARG: httpd started"
        else
            echo "$0 $ARG: httpd could not be started"
            ERROR=3
        fi
        ;;
      stop)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: $STATUS"
            continue
        fi
        if kill $PID ; then
            echo "$0 $ARG: httpd stopped"
        else
            echo "$0 $ARG: httpd could not be stopped"
            ERROR=4
        fi
        ;;
      restart)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: httpd not running, trying to start"
            if $HTTPD ; then
                echo "$0 $ARG: httpd started"
            else
                echo "$0 $ARG: httpd could not be started"
                ERROR=5
            fi
        else
            if kill -HUP $PID ; then
                echo "$0 $ARG: httpd restarted"
            else
                echo "$0 $ARG: httpd could not be restarted"
                ERROR=6
            fi
        fi
        ;;
      graceful)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: httpd not running, trying to start"
            if $HTTPD ; then
                echo "$0 $ARG: httpd started"
            else
                echo "$0 $ARG: httpd could not be started"
                ERROR=5
            fi
        else
            if kill -USR1 $PID ; then
                echo "$0 $ARG: httpd gracefully restarted"
            else
                echo "$0 $ARG: httpd could not be restarted"
                ERROR=7
            fi
        fi
        ;;
      status)
        $LYNX $STATUSURL | awk '  { if (/current process/) { print; exit } else 
print } '
        ;;
      fullstatus)
        $LYNX $STATUSURL
        ;;
      *)
        echo "usage: $0 (start|stop|restart|fullstatus|status|graceful|help)"
        cat <<EOF
  
  start      - start httpd
  stop       - stop httpd
  restart    - restart httpd if running by sending a SIGHUP or start if 
               not running
  fullstatus - dump a full status screen; requires lynx and mod_status enabled
  status     - dump a short status screen; requires lynx and mod_status enabled
  graceful   - do a graceful restart by sending a SIGUSR1 or start if not 
running
  help       - this screen
  
  EOF
        ERROR=2
      ;;
  
      esac
  
  done
  
  exit $ERROR
  
  # ====================================================================
  # Copyright (c) 1995-1997 The Apache Group.  All rights reserved.
  # 
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  # 
  # 1. Redistributions of source code must retain the above copyright
  #    notice, this list of conditions and the following disclaimer. 
  # 
  # 2. Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in
  #    the documentation and/or other materials provided with the
  #    distribution.
  # 
  # 3. All advertising materials mentioning features or use of this
  #    software must display the following acknowledgment:
  #    "This product includes software developed by the Apache Group
  #    for use in the Apache HTTP server project (http://www.apache.org/)."
  # 
  # 4. The names "Apache Server" and "Apache Group" must not be used to
  #    endorse or promote products derived from this software without
  #    prior written permission.
  # 
  # 5. Redistributions of any form whatsoever must retain the following
  #    acknowledgment:
  #    "This product includes software developed by the Apache Group
  #    for use in the Apache HTTP server project (http://www.apache.org/)."
  # 
  # THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
  # EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
  # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  # OF THE POSSIBILITY OF SUCH DAMAGE.
  # ====================================================================
  # 
  # This software consists of voluntary contributions made by many
  # individuals on behalf of the Apache Group and was originally based
  # on public domain software written at the National Center for
  # Supercomputing Applications, University of Illinois, Urbana-Champaign.
  # For more information on the Apache Group and the Apache HTTP server
  # project, please see <http://www.apache.org/>.
  # 
  
  
  

Reply via email to