Hi again, On 08/25/2010 08:53 PM, Adam D. Barratt wrote: > On Sun, 2010-07-18 at 17:33 +0200, Dario Minnucci wrote: >> On 06/19/2010 11:51 AM, Adam D. Barratt wrote: >>> I've been reviewing the few remaining packages in s-p-u in >>> preparation for the upcoming point release and had a couple of >>> comments / queries on your "mon" upload. > [...] >> As suggested, I'm sending this email to debian-release with the >> debdiff attached. >> >> The script seems to be Policy compliant now. > > Sorry for not getting back to you sooner; I seem to have managed to > misfile your mail. > Same here... comming back from holidays is slow and painfull ;-) >> +case "$1" in >> + start) >> + if [ -f $PIDFILE ] ; then >> + echo "$NAME daemon is already running." >> + else >> + start_deamon >> + fi > > The short-circuit case should be removed here; the existence of the > pidfile does not imply that the daemon is (still) running and your > start-stop-daemon call in start_daemon() already handles exiting > successfully if the daemon is in fact running. > I've tried what you suggest here but if I don't check for the existence of the PID file and the daemon is already running, starting it again fails. root@host:~# /etc/init.d/mon start ; echo $? Starting monitor daemon: 1 >> restart) > [...] >> + if [ -f $PIDFILE ] ; then >> + stop_daemon >> + sleep 1 >> + start_deamon >> + else >> + echo "$NAME daemon is not running." >> + start_deamon >> + fi > > Similarly here. If the daemon is not running, then stop_daemon() will > successfully fail to stop it with no ill effects. Admittedly, if the > pidfile doesn't exist then stop_daemon() is basically a no-op, but not > simply calling stop_daemon() followed by start_daemon() in all cases > doesn't really provide any benefit. Not checking for the PID file here is OK, because stop_daemon() is called before start_daemon(). The attached patch reflecting these changes produces: --- Tests --- root@host:~# /etc/init.d/mon stop ; echo $? Stopping monitor daemon: mon. 0 root@host:~# /etc/init.d/mon stop ; echo $? Stopping monitor daemon: No process in pidfile `/var/run/mon/mon.pid' found running; none killed. mon. 0 root@host:~# /etc/init.d/mon start ; echo $? Starting monitor daemon: mon. 0 root@host:~# /etc/init.d/mon start ; echo $? mon daemon is already running. 0 root@host:~# /etc/init.d/mon restart ; echo $? Stopping monitor daemon: mon. Starting monitor daemon: mon. 0 root@host:~# /etc/init.d/mon restart ; echo $? Stopping monitor daemon: mon. Starting monitor daemon: mon. 0 root@host:~# /etc/init.d/mon stop ; echo $? Stopping monitor daemon: mon. 0 root@host:~# /etc/init.d/mon restart ; echo $? Stopping monitor daemon: No process in pidfile `/var/run/mon/mon.pid' found running; none killed. mon. Starting monitor daemon: mon. 0 --- /Tests --- Thanks for your time. -- Dario Minnucci <midget@debian.org> Phone: +34 902021030 | Fax: +34 902024417 Key fingerprint = BAA1 7AAF B21D 6567 D457 D67D A82F BB83 F3D5 7033
diff -u mon-0.99.2/debian/mon.init.d mon-0.99.2/debian/mon.init.d --- mon-0.99.2/debian/mon.init.d +++ mon-0.99.2/debian/mon.init.d @@ -44,16 +44,30 @@ set -e -case "$1" in - start) + +function start_deamon { echo -n "Starting $DESC: " - start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER --group $GROUP --exec $DAEMON -- $DAEMON_OPTS + start-stop-daemon --start --oknodo --pidfile $PIDFILE --chuid $USER --group $GROUP --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." - ;; - stop) +} +function stop_daemon { echo -n "Stopping $DESC: " - start-stop-daemon --stop --quiet --pidfile $PIDFILE + start-stop-daemon --stop --oknodo --pidfile $PIDFILE echo "$NAME." +} + + + +case "$1" in + start) + if [ -f $PIDFILE ] ; then + echo "$NAME daemon is already running." + else + start_deamon + fi + ;; + stop) + stop_daemon ;; #reload) # @@ -80,11 +94,9 @@ || exit 0 ;; restart) - echo -n "Restarting $DESC: " - start-stop-daemon --stop --quiet --pidfile $PIDFILE - sleep 1 - start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER --group $GROUP --exec $DAEMON -- $DAEMON_OPTS - echo "$NAME." + stop_daemon + sleep 1 + start_deamon ;; *) N=/etc/init.d/$NAME diff -u mon-0.99.2/debian/changelog mon-0.99.2/debian/changelog --- mon-0.99.2/debian/changelog +++ mon-0.99.2/debian/changelog @@ -1,3 +1,10 @@ +mon (0.99.2-13+lenny1) stable-proposed-updates; urgency=low + + * debian/mon.init.d: Script fixes to return success when daemon + is restarted but is already running. (Closes: #538133) + + -- Dario Minnucci <midget@debian.org> Sun, 18 Jul 2010 17:09:04 +0200 + mon (0.99.2-13) unstable; urgency=low * debian/control: Conforms with latest Standards Version 3.8.0
Attachment:
signature.asc
Description: OpenPGP digital signature