# Allow executing init.d scripts as upstart jobs # Operate against system upstart, not session unset UPSTART_SESSION # Bail if there is an upstart job, and called via RC _RC_SCRIPT=${0#/etc/rc?.d/[KS]??*} if [ -r "/etc/init/${_RC_SCRIPT}.conf" ] && which initctl >/dev/null \ && initctl version 2>/dev/null | grep -q upstart then exit 0 fi _UPSTART_JOB=${0#/etc/init.d/} if [ -r "/etc/init/${_UPSTART_JOB}.conf" ] && which initctl >/dev/null \ && initctl version 2>/dev/null | grep -q upstart \ && initctl status ${_UPSTART_JOB} 2>/dev/null 1>/dev/null then # Upstart configuration exists for this job and we're running under upstart case "${1:-}" in start|stop|reload) # Action is a valid upstart action exec ${1} ${_UPSTART_JOB} ;; status) # return code of the command only tells us upstart is running, not # the status of the job. Map to LSB values. output=$(${1} ${_UPSTART_JOB}) || exit 4 echo "$output" case $output in *start/running*) exit 0 ;; *stop/waiting*) exit 3 ;; *) exit 4 ;; esac ;; restart|force-reload) # Map restart to the usual sysvinit behavior. stop ${_UPSTART_JOB} || : exec start ${_UPSTART_JOB} ;; esac fi