| #!/bin/sh |
| # |
| # Copyright (c) 2000 The Apache Software Foundation. |
| # See license at the end of this file. |
| # |
| # 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 |
| # 8 - configuration syntax error |
| # |
| # 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=@prefix@/logs/httpd.pid |
| # |
| # the path to your httpd binary, including options if necessary |
| HTTPD='@prefix@/bin/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:@PORT@/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` |
| if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then |
| STATUS="httpd (pid $PID) running" |
| RUNNING=1 |
| else |
| STATUS="httpd (pid $PID?) not running" |
| RUNNING=0 |
| 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 $HTTPD -t >/dev/null 2>&1; then |
| if kill -HUP $PID ; then |
| echo "$0 $ARG: httpd restarted" |
| else |
| echo "$0 $ARG: httpd could not be restarted" |
| ERROR=6 |
| fi |
| else |
| echo "$0 $ARG: configuration broken, ignoring restart" |
| echo "$0 $ARG: (run 'apachectl configtest' for details)" |
| 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 $HTTPD -t >/dev/null 2>&1; then |
| if kill -WINCH $PID ; then |
| echo "$0 $ARG: httpd gracefully restarted" |
| else |
| echo "$0 $ARG: httpd could not be restarted" |
| ERROR=7 |
| fi |
| else |
| echo "$0 $ARG: configuration broken, ignoring restart" |
| echo "$0 $ARG: (run 'apachectl configtest' for details)" |
| ERROR=7 |
| fi |
| fi |
| ;; |
| status) |
| $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } ' |
| ;; |
| fullstatus) |
| $LYNX $STATUSURL |
| ;; |
| configtest) |
| if $HTTPD -t; then |
| : |
| else |
| ERROR=8 |
| fi |
| ;; |
| *) |
| echo "usage: $0 (start|stop|restart|fullstatus|status|graceful|configtest|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 SIGWINCH or start if not running |
| configtest - do a configuration syntax test |
| help - this screen |
| |
| EOF |
| ERROR=2 |
| ;; |
| |
| esac |
| |
| done |
| |
| exit $ERROR |
| |
| # ==================================================================== |
| # The Apache Software License, Version 1.1 |
| # |
| # Copyright (c) 2000 The Apache Software Foundation. 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. The end-user documentation included with the redistribution, |
| # if any, must include the following acknowledgment: |
| # "This product includes software developed by the |
| # Apache Software Foundation (http://www.apache.org/)." |
| # Alternately, this acknowledgment may appear in the software itself, |
| # if and wherever such third-party acknowledgments normally appear. |
| # |
| # 4. The names "Apache" and "Apache Software Foundation" must |
| # not be used to endorse or promote products derived from this |
| # software without prior written permission. For written |
| # permission, please contact apache@apache.org. |
| # |
| # 5. Products derived from this software may not be called "Apache", |
| # nor may "Apache" appear in their name, without prior written |
| # permission of the Apache Software Foundation. |
| # |
| # THIS SOFTWARE IS PROVIDED ``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 SOFTWARE FOUNDATION 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 Software Foundation. For more |
| # information on the Apache Software Foundation, please see |
| # <http://www.apache.org/>. |
| # |
| # Portions of this software are based upon public domain software |
| # originally written at the National Center for Supercomputing Applications, |
| # University of Illinois, Urbana-Champaign. |
| # |