Skip to content

Instantly share code, notes, and snippets.

@x684867
Created November 4, 2014 23:14
Show Gist options
  • Save x684867/0807a9285c5e6cc7c5f0 to your computer and use it in GitHub Desktop.
Save x684867/0807a9285c5e6cc7c5f0 to your computer and use it in GitHub Desktop.
A simple pattern for init scripts...just for munna.
#!/bin/sh
### BEGIN INIT INFO
# Provides: SERVICE_NAME
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 4 5
# Default-Stop: 0 1 6
# Short-Description: SERVICE_DESCRIPTION
# Description: starts named service using start-stop-daemon
### END INIT INFO
SVC_HOME=/opt/myService
SVC_USER=myServiceUser
SVC_LOG=/var/log/myService.log
SVC_NAME=myService
SVC_COMMAND="java -jar /opt/myService/executable.jar"
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$SVC_HOME
startServer(){
echo -n "Starting $SVC_NAME: "
echo "$0 start" >> $SVC_LOG
chown $SVC_USER: $SVC_LOG
chown $SVC_USER: $SVC_HOME -R
statusCheck && echo "Service is already running." && exit 0
su \
-c "cd $SVC_HOME; nohup $SVC_COMMAND &>>$SVC_LOG &" \
-l $SVC_USER || {
echo "error starting $SVC_NAME."
exit 1
}
prettySleep 5
}
stopServer(){
echo -n "Stopping $SVC_NAME: "
echo "$0 stop" >> $SVC_LOG
statusCheck || echo "Service is already stopped." && exit 0
for pid in "$(ps aux 2>/dev/null | grep -v grep | grep -v init | grep $SVC_COMMAND | awk '{print $2}')";do
echo -n " kill process: $pid"
kill -9 $pid 2> /dev/null || {
echo "[FAILED]"
exit 1
}
echo "SERVICE STOPPED" >> $SVC_LOG
echo "[OK]"
done
}
serviceCheck(){
#Return 0 if running, 1 if not.
echo "Checking status"
}
prettySleep(){
echo "waiting...";for i in $(seq 1 1 $1); do echo -n ".";sleep 1;done;echo " "
}
case "$1" in
start)
startServer
;;
stop)
stopServer
;;
restart)
stopServer
startServer
;;
status)
serviceCheck
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
STATE=1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment