1- #! /bin/bash
1+ #! /bin/sh
22#
33# {{package_name}}
44#
@@ -17,66 +17,124 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin
1717DESC=" {{package_shortdesc}}"
1818NAME={{package_install_name}}
1919DAEMON=/usr/{{bin_or_sbin}}/$NAME
20+ lockfile=/var/lock/subsys/$NAME
21+ pidfile=/var/run/$NAME /$NAME .pid
2022
2123# Check for script, config and data dirs
2224[ -x /usr/{{bin_or_sbin}}/$NAME ] || exit 0
2325[ -d /etc/$NAME ] || exit 0
2426[ -d /var/lib/$NAME ] || exit 0
25- [ -d /var/run/$NAME ] || exit 0
2627
28+ status -p $pidfile -l $( basename $lockfile ) $NAME > /dev/null 2>&1
29+ running=$?
30+
31+ check_pid_status () {
32+ pid=$( ps ax | grep beam.smp | grep " \-progname $NAME " | awk ' {print $1}' )
33+ if [ " $pid " = " " ]; then
34+ # prog not running?
35+ return 1
36+ else
37+ # running
38+ return 0
39+ fi
40+ }
2741
2842start () {
29- # Start daemons.
30- echo -n $" Starting {{package_install_name}}: "
31- su - {{package_install_user}} -c " $DAEMON start" && success || failure $" $NAME start"
32- RETVAL=$?
33- [ $RETVAL -eq 0 ]
34- echo
35- return $RETVAL
43+ # Start daemons.
44+ echo -n $" Starting {{package_install_name}}: "
45+ $DAEMON start
46+ RETVAL=$?
47+ if [ $RETVAL -eq 0 ]; then
48+ touch $lockfile
49+ success
50+ else
51+ failure $" $NAME start"
52+ fi
53+ echo
54+ return $RETVAL
3655}
3756
3857stop () {
39- # Stop daemon.
40- echo -n $" Stopping {{package_install_name}}: "
41- $DAEMON stop 2> /dev/null 1>&2
42- sleep 2
43- # Check if the process is still running, muting output of getpid
44- MUTE=` $DAEMON getpid`
45- [ " $? " -ne 0 ] && success && echo && return 0 || failure $" $NAME stop"
46- sleep 10
47- MUTE=` $DAEMON getpid`
48- [ " $? " -ne 0] && success && echo && return 0 || failure $" $NAME failed to stop"
49- echo
50- return 1
51-
58+ # Stop daemon.
59+ echo -n $" Shutting down {{package_install_name}}: "
60+ $DAEMON stop 2> /dev/null
61+ for n in $( seq 1 10) ; do
62+ sleep 1
63+ check_pid_status
64+ RETVAL=$?
65+ if [ $RETVAL -eq 1 ]; then
66+ break
67+ fi
68+ done
69+ if [ $RETVAL -eq 1 ]; then
70+ rm -f $lockfile $pidfile
71+ success
72+ else
73+ failure $" $NAME stop"
74+ fi
75+ echo
76+ return $RETVAL
5277}
5378
54- status () {
55- # Check status of daemon
56- $DAEMON ping && success && echo $" $NAME is running..." && return 0 || failure $" $NAME is stopped"
57- return 2
79+ hardstop () {
80+ echo -n $" Shutting down $NAME : "
81+ su - {{package_install_user}} -c " ps -ef | grep beam.smp | grep '\-progname $NAME ' | grep -v grep | awk '{print \$ 2}' | xargs kill -9"
82+ for n in $( seq 1 10) ; do
83+ sleep 1
84+ check_pid_status
85+ RETVAL=$?
86+ if [ $RETVAL -eq 1 ]; then
87+ break
88+ fi
89+ done
90+ if [ $RETVAL -eq 1 ]; then
91+ rm -f $lockfile $pidfile
92+ success
93+ else
94+ failure $" $NAME hardstop"
95+ fi
96+ echo
97+ return $RETVAL
5898}
5999
60100# See how we were called.
61101case " $1 " in
62- start)
102+ start)
103+ [ $running -eq 0 ] && exit 0
63104 start
64105 ;;
65- stop)
66- stop
106+ stop)
107+ if [ $running -eq 0 ]; then
108+ stop
109+ else
110+ check_pid_status
111+ RETVAL=$?
112+ if [ $RETVAL -eq 1 ]; then
113+ rm -f $lockfile $pidfile
114+ fi
115+ exit 0
116+ fi
67117 ;;
68- restart)
69- stop
118+ restart|force-reload )
119+ [ $running -eq 0 ] && stop
70120 start
71121 ;;
72- ping)
73- $DAEMON ping || exit $?
122+ hardstop)
123+ [ $running -eq 0 ] || exit 0
124+ hardstop
74125 ;;
75- status)
76- status && exit 0 || exit $?
126+ condrestart|try-restart)
127+ [ $running -eq 0 ] || exit 0
128+ restart
129+ ;;
130+ status)
131+ status -p $pidfile -l $( basename $lockfile ) $NAME
132+ ;;
133+ ping)
134+ $DAEMON ping || exit $?
77135 ;;
78- * )
79- echo $" Usage: $0 {start|stop|restart|ping| status}"
136+ * )
137+ echo $" Usage: $0 {start|stop|restart|force-reload|hardstop|condrestart|try-restart| status|ping }"
80138 exit 1
81139esac
82140
0 commit comments