#!/bin/bash # # chkconfig: - 84 16 # description: Start up moin FastCGI external applications # # processname: moin.fcg # config: /etc/sysconfig/moin-fastcgi # source function library . /etc/rc.d/init.d/functions # Get network config . /etc/sysconfig/network # Check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0 # no wikis by default (configure in /etc/sysconfig/moin-fastcgi) WIKI_COUNT=0 # Sleep 2 seconds before checking status SLEEP_TIME=2000000 # Run as user apache httpduser=apache # source the config [ -f /etc/sysconfig/moin-fastcgi ] && . /etc/sysconfig/moin-fastcgi RETVAL=0 prog=/usr/bin/python PRE_PORT_PAT='^tcp[[:space:]]*0[[:space:]]*0[[:space:]]* 127\.0\.0\.1:' POST_PORT_PAT='[[:space:]]*0\.0\.0\.0:\*[[:space:]]*LISTEN[[:space:]]*[0-9]*/python[[:space:]]*$' moin_status () { #echo Checking status for port $1 # This echo seems to help detection at start time for reasons unknown echo &> /dev/null /bin/netstat -nltp | /bin/grep "${PRE_PORT_PAT}$1${POST_PORT_PAT}" &> /dev/null } moin_pid () { /bin/netstat -nltp | /bin/grep "${PRE_PORT_PAT}$1${POST_PORT_PAT}" | /bin/sed -e 's@.*[[:space:]][[:space:]]*\([0-9]*\)/python[[:space:]]*$@\1@' } moin_start () { WIKINAME="${WIKI_NAME[$1]}" WIKIFCGI="${WIKI_FCGI[$1]}" WIKIDIR="$(dirname $WIKIFCGI)" WIKIPORT=${WIKI_PORT[$1]} echo -n $"Starting moin wiki ${WIKINAME}: " cd ${WIKIDIR} /sbin/runuser -s /bin/sh -c "$prog ${WIKIFCGI}" $httpduser &> /dev/null & disown -ar usleep $SLEEP_TIME moin_status $WIKIPORT && echo_success || echo_failure RETVAL=$? echo cd - &> /dev/null } moin_stop () { WIKINAME="${WIKI_NAME[$1]}" WIKIPORT=${WIKI_PORT[$1]} echo -n $"Shutting down moin wiki ${WIKINAME}: " WIKIPID=$(moin_pid $WIKIPORT) [ -n "$WIKIPID" ] && kill "$WIKIPID" && echo_success || echo_failure echo } case "$1" in start) if [ $WIKI_COUNT -gt 0 ]; then for WIKI in $(seq 1 $WIKI_COUNT) do moin_start $WIKI done fi ;; stop) if [ $WIKI_COUNT -gt 0 ]; then for WIKI in $(seq 1 $WIKI_COUNT) do moin_stop $WIKI done fi ;; restart|reload) $0 stop $0 start ;; condrestart) if [ $WIKI_COUNT -gt 0 ]; then for WIKI in $(seq 1 $WIKI_COUNT) do if moin_status ${WIKI_PORT[${WIKI}]}; then moin_stop $WIKI moin_start $WIKI fi done fi ;; status) if [ $WIKI_COUNT -gt 0 ]; then for WIKI in $(seq 1 $WIKI_COUNT) do moin_status ${WIKI_PORT[${WIKI}]} && echo $"moin wiki ${WIKI_NAME[${WIKI}]} is running" || echo $"moin wiki ${WIKI_NAME[${WIKI}]} is stopped" done fi ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" exit 1 esac exit 0