#!/bin/sh ACTION=$1 CALLER=$2 ansi_red="\033[1;31m"; ansi_white="\033[1;37m"; ansi_green="\033[1;32m"; ansi_yellow="\033[1;33m"; ansi_blue="\033[1;34m"; ansi_bell="\007"; ansi_blink="\033[5m"; ansi_std="\033[m"; ansi_rev="\033[7m"; ansi_ul="\033[4m"; getProcPid() { for i in `pidof $PROC`; do readlink -f /proc/$i/exe | grep -q "entware" if [ $? -eq 0 ]; then echo -n "$i " fi done } start() { [ "$CRITICAL" != "yes" -a "$CALLER" = "cron" ] && return 7 [ "$ENABLED" != "yes" ] && return 8 echo -e -n "$ansi_white Starting $DESC... " if [ -n "$(getProcPid)" ]; then echo -e " $ansi_yellow already running. $ansi_std" return 0 fi $PRECMD > /dev/null 2>&1 $PREARGS $PROC $ARGS > /dev/null 2>&1 & #echo $PREARGS $PROC $ARGS COUNTER=0 LIMIT=10 while [ -z "$(getProcPid)" -a "$COUNTER" -le "$LIMIT" ]; do sleep 1s; COUNTER=`expr $COUNTER + 1` done $POSTCMD > /dev/null 2>&1 if [ -z "$(getProcPid)" ]; then echo -e " $ansi_red failed. $ansi_std" logger "Failed to start $DESC from $CALLER." return 255 else echo -e " $ansi_green done. $ansi_std" logger "Started $DESC from $CALLER." return 0 fi } stop() { case "$ACTION" in stop | restart) echo -e -n "$ansi_white Shutting down $PROC... " for procpid in $(getProcPid); do kill $procpid 2>/dev/null done COUNTER=0 LIMIT=10 while [ -n "$(getProcPid)" -a "$COUNTER" -le "$LIMIT" ]; do sleep 1s; COUNTER=`expr $COUNTER + 1` done ;; kill) echo -e -n "$ansi_white Killing $PROC... " killall -9 $PROC 2>/dev/null ;; esac if [ -n "$(getProcPid)" ]; then echo -e " $ansi_red failed. $ansi_std" return 255 else echo -e " $ansi_green done. $ansi_std" return 0 fi } check() { echo -e -n "$ansi_white Checking $DESC... " if [ -n "$(getProcPid)" ]; then echo -e " $ansi_green alive. $ansi_std"; return 0 else echo -e " $ansi_red dead. $ansi_std"; return 1 fi } reconfigure() { SIGNAL=SIGHUP echo -e "$ansi_white Sending $SIGNAL to $PROC... " killall -$SIGNAL $PROC 2>/dev/null } for PROC in $PROCS; do case $ACTION in start) start ;; stop | kill ) check && stop ;; restart) check > /dev/null && stop start ;; check) check ;; reconfigure) reconfigure ;; *) echo -e "$ansi_white Usage: $0 (start|stop|restart|check|kill|reconfigure)$ansi_std" exit 1 ;; esac done