the following stop() function is run by /etc/init.d/svscan:
stop() {
ebegin "Stopping service scan services"
svc -dx /service/* 2>/dev/null
eend $?
ebegin "Stopping service scan logging"
svc -dx /service/*/log 2>/dev/null
eend $?
ebegin "Stopping service scan"
start-stop-daemon --stop --exec /usr/bin/svscan \
--pidfile /var/run/svscan.pid
eend $?
}
in between the time the supervise processes are killed by svc -dx, and the time
the svscan process is killed, svscan may spawn new supervise processes, since
that's what it's supposed to do every 5 seconds. so you can potentially wind
up with a lot of unkilled daemons at shutdown time.
the fix is simple, just kill svscan first:
stop() {
ebegin "Stopping service scan"
start-stop-daemon --stop --exec /usr/bin/svscan \
--pidfile /var/run/svscan.pid
eend $?
ebegin "Stopping service scan services"
svc -dx /service/* 2>/dev/null
eend $?
ebegin "Stopping service scan logging"
svc -dx /service/*/log 2>/dev/null
eend $?
}