1*76404edcSAsim Jamshed#! /bin/sh 2*76404edcSAsim Jamshed# Copyright (c) 1995-2002 SuSE Linux AG, Nuernberg, Germany. 3*76404edcSAsim Jamshed# All rights reserved. 4*76404edcSAsim Jamshed# 5*76404edcSAsim Jamshed# Author: Kurt Garloff <[email protected]> 6*76404edcSAsim Jamshed# 7*76404edcSAsim Jamshed# /etc/init.d/FOO 8*76404edcSAsim Jamshed# 9*76404edcSAsim Jamshed# and symbolic its link 10*76404edcSAsim Jamshed# 11*76404edcSAsim Jamshed# /(usr/)sbin/rcFOO 12*76404edcSAsim Jamshed# 13*76404edcSAsim Jamshed# LSB compliant service control script; see http://www.linuxbase.org/spec/ 14*76404edcSAsim Jamshed# 15*76404edcSAsim Jamshed# System startup script for some example service or daemon FOO (template) 16*76404edcSAsim Jamshed# 17*76404edcSAsim Jamshed### BEGIN INIT INFO 18*76404edcSAsim Jamshed# Provides: FOO 19*76404edcSAsim Jamshed# Required-Start: $remote_fs $syslog 20*76404edcSAsim Jamshed# Required-Stop: $remote_fs $syslog 21*76404edcSAsim Jamshed# Default-Start: 3 5 22*76404edcSAsim Jamshed# Default-Stop: 0 1 2 6 23*76404edcSAsim Jamshed# Description: Start FOO to allow XY and provide YZ 24*76404edcSAsim Jamshed# continued on second line by '#<TAB>' 25*76404edcSAsim Jamshed### END INIT INFO 26*76404edcSAsim Jamshed# 27*76404edcSAsim Jamshed# Note on Required-Start: It does specify the init script ordering, 28*76404edcSAsim Jamshed# not real dependencies. Depencies have to be handled by admin 29*76404edcSAsim Jamshed# resp. the configuration tools (s)he uses. 30*76404edcSAsim Jamshed 31*76404edcSAsim Jamshed# Source SuSE config (if still necessary, most info has been moved) 32*76404edcSAsim Jamshedtest -r /etc/rc.config && . /etc/rc.config 33*76404edcSAsim Jamshed 34*76404edcSAsim Jamshed# Check for missing binaries (stale symlinks should not happen) 35*76404edcSAsim JamshedLIGHTTPD_BIN=/usr/sbin/lighttpd 36*76404edcSAsim Jamshedtest -x $LIGHTTPD_BIN || exit 5 37*76404edcSAsim Jamshed 38*76404edcSAsim Jamshed# Check for existence of needed config file and read it 39*76404edcSAsim JamshedLIGHTTPD_CONFIG=/etc/sysconfig/lighttpd 40*76404edcSAsim Jamshedtest -r $LIGHTTPD_CONFIG || exit 6 41*76404edcSAsim Jamshed. $LIGHTTPD_CONFIG 42*76404edcSAsim Jamshed 43*76404edcSAsim Jamshed# Shell functions sourced from /etc/rc.status: 44*76404edcSAsim Jamshed# rc_check check and set local and overall rc status 45*76404edcSAsim Jamshed# rc_status check and set local and overall rc status 46*76404edcSAsim Jamshed# rc_status -v ditto but be verbose in local rc status 47*76404edcSAsim Jamshed# rc_status -v -r ditto and clear the local rc status 48*76404edcSAsim Jamshed# rc_failed set local and overall rc status to failed 49*76404edcSAsim Jamshed# rc_failed <num> set local and overall rc status to <num><num> 50*76404edcSAsim Jamshed# rc_reset clear local rc status (overall remains) 51*76404edcSAsim Jamshed# rc_exit exit appropriate to overall rc status 52*76404edcSAsim Jamshed# rc_active checks whether a service is activated by symlinks 53*76404edcSAsim Jamshed. /etc/rc.status 54*76404edcSAsim Jamshed 55*76404edcSAsim Jamshed# First reset status of this service 56*76404edcSAsim Jamshedrc_reset 57*76404edcSAsim Jamshed 58*76404edcSAsim Jamshed# Return values acc. to LSB for all commands but status: 59*76404edcSAsim Jamshed# 0 - success 60*76404edcSAsim Jamshed# 1 - generic or unspecified error 61*76404edcSAsim Jamshed# 2 - invalid or excess argument(s) 62*76404edcSAsim Jamshed# 3 - unimplemented feature (e.g. "reload") 63*76404edcSAsim Jamshed# 4 - insufficient privilege 64*76404edcSAsim Jamshed# 5 - program is not installed 65*76404edcSAsim Jamshed# 6 - program is not configured 66*76404edcSAsim Jamshed# 7 - program is not running 67*76404edcSAsim Jamshed# 68*76404edcSAsim Jamshed# Note that starting an already running service, stopping 69*76404edcSAsim Jamshed# or restarting a not-running service as well as the restart 70*76404edcSAsim Jamshed# with force-reload (in case signalling is not supported) are 71*76404edcSAsim Jamshed# considered a success. 72*76404edcSAsim Jamshed 73*76404edcSAsim Jamshedcase "$1" in 74*76404edcSAsim Jamshed start) 75*76404edcSAsim Jamshed echo -n "Starting lighttpd" 76*76404edcSAsim Jamshed ## Start daemon with startproc(8). If this fails 77*76404edcSAsim Jamshed ## the echo return value is set appropriate. 78*76404edcSAsim Jamshed 79*76404edcSAsim Jamshed # NOTE: startproc returns 0, even if service is 80*76404edcSAsim Jamshed # already running to match LSB spec. 81*76404edcSAsim Jamshed startproc $LIGHTTPD_BIN -f $LIGHTTPD_CONF_PATH 82*76404edcSAsim Jamshed 83*76404edcSAsim Jamshed # Remember status and be verbose 84*76404edcSAsim Jamshed rc_status -v 85*76404edcSAsim Jamshed ;; 86*76404edcSAsim Jamshed stop) 87*76404edcSAsim Jamshed echo -n "Shutting down lighttpd" 88*76404edcSAsim Jamshed ## Stop daemon with killproc(8) and if this fails 89*76404edcSAsim Jamshed ## set echo the echo return value. 90*76404edcSAsim Jamshed 91*76404edcSAsim Jamshed killproc -TERM $LIGHTTPD_BIN 92*76404edcSAsim Jamshed 93*76404edcSAsim Jamshed # Remember status and be verbose 94*76404edcSAsim Jamshed rc_status -v 95*76404edcSAsim Jamshed ;; 96*76404edcSAsim Jamshed try-restart) 97*76404edcSAsim Jamshed ## Stop the service and if this succeeds (i.e. the 98*76404edcSAsim Jamshed ## service was running before), start it again. 99*76404edcSAsim Jamshed ## Note: try-restart is not (yet) part of LSB (as of 0.7.5) 100*76404edcSAsim Jamshed $0 status >/dev/null && $0 restart 101*76404edcSAsim Jamshed 102*76404edcSAsim Jamshed # Remember status and be quiet 103*76404edcSAsim Jamshed rc_status 104*76404edcSAsim Jamshed ;; 105*76404edcSAsim Jamshed restart) 106*76404edcSAsim Jamshed ## Stop the service and regardless of whether it was 107*76404edcSAsim Jamshed ## running or not, start it again. 108*76404edcSAsim Jamshed $0 stop 109*76404edcSAsim Jamshed $0 start 110*76404edcSAsim Jamshed 111*76404edcSAsim Jamshed # Remember status and be quiet 112*76404edcSAsim Jamshed rc_status 113*76404edcSAsim Jamshed ;; 114*76404edcSAsim Jamshed force-reload|reload) 115*76404edcSAsim Jamshed ## Like force-reload, but if daemon does not support 116*76404edcSAsim Jamshed ## signalling, do nothing (!) 117*76404edcSAsim Jamshed 118*76404edcSAsim Jamshed # If it supports signalling: 119*76404edcSAsim Jamshed echo -n "Reload service LIGHTTPD" 120*76404edcSAsim Jamshed killproc -INT $LIGHTTPD_BIN 121*76404edcSAsim Jamshed $0 start 122*76404edcSAsim Jamshed touch /var/run/lighttpd.pid 123*76404edcSAsim Jamshed rc_status -v 124*76404edcSAsim Jamshed 125*76404edcSAsim Jamshed ## Otherwise if it does not support reload: 126*76404edcSAsim Jamshed #rc_failed 3 127*76404edcSAsim Jamshed #rc_status -v 128*76404edcSAsim Jamshed ;; 129*76404edcSAsim Jamshed status) 130*76404edcSAsim Jamshed echo -n "Checking for service LIGHTTPD: " 131*76404edcSAsim Jamshed ## Check status with checkproc(8), if process is running 132*76404edcSAsim Jamshed ## checkproc will return with exit status 0. 133*76404edcSAsim Jamshed 134*76404edcSAsim Jamshed # Return value is slightly different for the status command: 135*76404edcSAsim Jamshed # 0 - service running 136*76404edcSAsim Jamshed # 1 - service dead, but /var/run/ pid file exists 137*76404edcSAsim Jamshed # 2 - service dead, but /var/lock/ lock file exists 138*76404edcSAsim Jamshed # 3 - service not running 139*76404edcSAsim Jamshed 140*76404edcSAsim Jamshed # NOTE: checkproc returns LSB compliant status values. 141*76404edcSAsim Jamshed checkproc $LIGHTTPD_BIN 142*76404edcSAsim Jamshed rc_status -v 143*76404edcSAsim Jamshed ;; 144*76404edcSAsim Jamshed probe) 145*76404edcSAsim Jamshed ## Optional: Probe for the necessity of a reload, 146*76404edcSAsim Jamshed ## print out the argument which is required for a reload. 147*76404edcSAsim Jamshed 148*76404edcSAsim Jamshed test /etc/lighttpd/lighttpd.conf -nt /var/run/lighttpd.pid && echo reload 149*76404edcSAsim Jamshed ;; 150*76404edcSAsim Jamshed *) 151*76404edcSAsim Jamshed echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" 152*76404edcSAsim Jamshed exit 1 153*76404edcSAsim Jamshed ;; 154*76404edcSAsim Jamshedesac 155*76404edcSAsim Jamshedrc_exit 156