LSB Init.d Script Template
Managing daemons on Linux
Quick little init.d
template:
#!/bin/bash
# <Application Name>
# chkconfig: 345 20 80
# description: <Description>
# processname: <Process Name|Application Name|Short name>
# author: Richard Sumilang <me@richardsumilang.com>
# see: https://wiki.debian.org/LSBInitScripts
CMD="" # Command goes here
NAME="<Short Application Name>" # Short Application Name
PIDFILE=/var/run/$NAME.pid # Process ID File
SCRIPTNAME=/etc/init.d/$NAME # This script name
case "$1" in
start)
# Make sure process is not already running
if [ -f $PIDFILE ]; then
echo "PID already exists: $PIDFILE"
exit 1
fi
# Use pgrep to retrieve the Process ID
$CMD
sleep 1
PID=`pgrep -fn "$CMD"`
# Save process ID to file
if [ -z $PID ]; then
printf "%s\n" "Failed to start $NAME"
else
echo $PID > $PIDFILE
printf "%s\n" "$NAME ... Ok"
fi
;;
status)
printf "%-50s" "Checking $NAME..."
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
printf "%s\n" "Process dead but pidfile exists"
else
echo "$NAME is Running"
fi
else
printf "%s\n" "$NAME is not running"
fi
;;
stop)
printf "%-50s" "Stopping $NAME"
PID=`cat $PIDFILE`
if [ -f $PIDFILE ]; then
kill $PID
printf "%s\n" "Ok"
rm -f $PIDFILE
else
printf "%s\n" "pidfile not found"
fi
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {status|start|stop|restart}"
exit 1
esac