1#!/bin/bash 2 3DIR=/var/run/dnscheck 4USER=dnscheck 5DISPATCHER=/usr/bin/dnscheck-dispatcher 6PIDFILE=dnscheck_dispatcher.pid 7 8check_running () { 9 PID=`ps ax|grep dnscheck-disp|grep -v grep|awk '{print $1}'` 10 if [ "X${PID}" == "X" ];then 11 return 0 12 fi 13 14 return 1 15} 16 17start () { 18 check_running 19 if [ $? -eq 1 ];then 20 echo "Already running" 21 exit 22 fi 23 24 echo Starting $DISPATCHER 25 if [ \! -d $DIR ];then 26 ( mkdir $DIR && chown $USER $DIR ) || exit 1 27 fi 28 29 su $USER $DISPATCHER 30} 31 32stop () { 33 echo Stopping $DISPATCHER 34 check_running 35 if [ $? -eq 0 ]; then 36 echo "Not running" 37 exit 38 fi 39 pid=`cat $DIR/$PIDFILE` 40 kill $pid 41 sleep 1 42 i=0 43 while ( kill -0 $pid 2> /dev/null && [ $i < 12]); do 44 echo 'Waiting for dispatcher to exit...' 45 i=`expr $i + 1` 46 sleep 5 47 done 48 if [ $i -eq 12 ]; then 49 echo 'Timeout. Killing dispatcher harder.' 50 kill -9 $pid 51 fi 52} 53 54case $1 in 55 'start' ) 56 start 57 ;; 58 'stop' ) 59 stop 60 ;; 61 'restart' ) 62 stop 63 start 64 ;; 65esac 66