Skip to content

Commit 2ad754d

Browse files
committed
Merge pull request #44 from basho/jhc-redhat
Convert RPM init script to fall in line with Redhat style
2 parents 6ef0017 + 972040c commit 2ad754d

File tree

2 files changed

+97
-37
lines changed

2 files changed

+97
-37
lines changed

priv/base/runner

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,14 @@ case "$1" in
123123
exit $ES
124124
fi
125125

126+
# Tell nodetool to stop
126127
$NODETOOL stop
127128
ES=$?
128129
if [ "$ES" -ne 0 ]; then
129130
exit $ES
130131
fi
131132

133+
# Now wait for the app to *really* stop
132134
while `kill -s 0 $PID 2>/dev/null`;
133135
do
134136
sleep 1

priv/templates/rpm/init.script

Lines changed: 95 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/bin/sh
22
#
33
# {{package_name}}
44
#
@@ -17,66 +17,124 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin
1717
DESC="{{package_shortdesc}}"
1818
NAME={{package_install_name}}
1919
DAEMON=/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

2842
start() {
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

3857
stop() {
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.
61101
case "$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
81139
esac
82140

0 commit comments

Comments
 (0)