I run daemontools from upstart. I ran into a problem that one of my daemons needed dbus to be working, but upstart was starting daemontools before rc had a chance to start it. The bigger problem is that CentOS 6 is only a partial conversion to upstart in that it still uses rc files for most things.
I used to have start on runlevel [345]
in /etc/init/daemontools.conf but that means daemontools is started at the same time (or even before) as rc.
I tried start on started rc
but that means daemontools runs after rc is launched, not after rc has finished.
The solution is a custom event :
cat <<'SH' >/etc/init.d/rc-done #!/bin/sh # # rc-done Emits events when rc has finished or nearly # # chkconfig: 2345 99 01 [ -e /etc/sysconfig/rc-done ] && . /etc/sysconfig/rc-done case "$1" in start) initctl emit rc-done ;; stop) initctl emit rc-start ;; *) echo $"Usage: $0 {start|stop}" exit 2 esac exit $? SH chmod +x /etc/init.d/rc-done chkconfig --add /etc/init.d/rc-done
Now we put start on rc-done
into daemontools.conf
Of course the interesting part is initctl emit rc-done
. We could just as easily have put that at end of rc.local.