USERNAME=username
LIGHTTPD_CONF=/home/$USERNAME/service/lighttpd.conf
PIDFILE=/home/$USERNAME/service/logs/lighttpd.pid
HTTPD=/home/$USERNAME/lighttpd/sbin/lighttpd
PID=0
if [ -e $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ "x" == "x$PID" ]; then
PID=0
fi
fi
case "$1" in
start)
if [ 0 -ne $PID ]; then
running=`ps --pid $PID | grep $PID`
if [ $running ]; then
echo "lighttpd is already running"
exit 1
fi
rm $PIDFILE
PID=0
fi
$HTTPD -f $LIGHTTPD_CONF
;;
stop)
if [ 0 -eq $PID ]; then
echo "lighttpd was not running"
exit 1
fi
kill $PID
tries=""
while [ -e $PIDFILE ]; do
if [ "x$tries" == "x.........." ]; then
break
fi
sleep 2
tries=".$tries"
done
if [ -e $PIDFILE ]; then
echo "lighttpd did not go gentle into that good night, murdering"
kill -9 $PID
rm $PIDFILE
fi
;;
restart)
$0 stop
$0 start
;;
reload)
if [ 0 -eq $PID ]; then
echo "lighttpd was not running"
fi
kill -HUP $PID
;;
*)
echo "Usage: "`basename $0`" (start|stop|restart|reload)"
exit 1
;;
esac
...because the value of running was being set to the PID & a "?" sign concatentated. The output on my system is as follows:
So the if-statement was:
if [ 83222 ? ]; then
I made a simple modification so that $running is set to the count of processes instead of the setting it to a string that may containt a "?", like so:
running=`ps --pid $PID | grep $PID |wc -l`
I also added some simple echo commands, just so the output was more verbose....this is my preference, not a statement that it should be.
Here are my simple modifications: