possible bug with start-stop-daemon and --test?
Ed W
lists at wildgooses.com
Mon Apr 4 07:35:15 UTC 2011
On 04/04/2011 00:51, Denys Vlasenko wrote:
> On Thursday 31 March 2011 17:24, Ed W wrote:
>> Hi, the "full-fat" version of start-stop-daemon tends to be used in init
>> scripts using the --test option to see if the daemon is actually running
>> or crashed. This isn't obviously working as expected for me with
>> busybox-1.18.3 ?
>>
>> $ start-stop-daemon -K --test --pidfile /tmp/my.pid && echo true
>> stopped process in pidfile '/tmp/my.pid' (pid 999999999)
>> true
>>
>> I think the current behaviour isn't expected (man page says it should
>> return non zero)? Would a fix be straightforward?
>
> Yes, fixing this should be easy. But first, what is the expected behavior,
> including the message? "stopped process in pidfile FOO" doesn't
> look good... what "standard" start-stop-daemon says in this case?
>
I think there might be a cut'n'paste typo here in that I may have
removed a "-v" from my command above. Full repro case here:
Using start-stop-daemon from "openrc 0.6.8" (gentoo amd64)
# echo 9999999 > /tmp/my.pid && start-stop-daemon -K --test --pidfile
/tmp/my.pid -v && echo true
* Will stop PID in pidfile `/tmp/my.pid'
* start-stop-daemon: no matching processes found
On busybox 1.18.3
$ echo 9999999 > /tmp/my.pid && start-stop-daemon -K --test --pid
file /tmp/my.pid -v && echo true
stopped process in pidfile '/tmp/my.pid' (pid 9999999)
true
(note the "true" result returned with busybox? $? is 1 with openrc,
it's 0 with busybox)
Expected behaviour is noted here:
http://www.busybox.net/BusyBox.html
-K only:
-t,--test Match only, exit with 0 if a process is found
Obviously it's not explicit about return value if the process is NOT
found, but I think it's inferred that it shouldn't be zero? I only have
gentoo machines to hand, but as a data point they return 1 in the event
of a process not found?
# echo 9999999 > /tmp/my.pid && start-stop-daemon -K --test --pidfile
/tmp/my.pid -v; echo "return: $?"
* Will stop PID in pidfile `/tmp/my.pid'
* start-stop-daemon: no matching processes found
return: 1
In the case of Gentoo the startup scripts use the idiom above quite a
bit to check for correct startup, crashed jobs and whether to cleanup
dead pids. So with -t always returning 0 it's somewhat neutered some of
my init scripts? (I guess other distros are moving to fancy upstart
derivatives so might not have noticed?)
Thanks for any help resolving?
Ed W
More information about the busybox
mailing list