How to launch services that do not fork to background using the rc infrastructure?

Grzegorz Blach magik at roorback.net
Tue Jan 22 15:29:35 UTC 2013


On 01/22/2013 04:19 PM, Javier Martín Rueda wrote:
> The typical and simple rc.d script to launch a service has, esentially,
> the following:
>
> . /etc/rc.subr
>
> name=SERVICE
> rcvar=SERVICE_enable
>
> command="/usr/local/sbin/PROGRAM"
>
> pidfile=/var/run/${name}.pid
> SERVICE_enable=${SERVICE_enable:-"NO"}
>
> load_rc_config ${name}
> run_rc_command "$1"
>
> One of the ports (net/spread4) runs a PROGRAM that does not fork to
> background as a daemon and which does not have any command-line option
> to ask it to do so. Therefore, the rc.d script never finishes, with
> various consequences (system boot stops, no pid file generated...)
>
> I tried adding a "&" to SERVICE_flags to see if it made it run in the
> background, but it didn't do the trick. I also quickly checked the
> /etc/rc.subr code to see if there is any way of forcing a background
> launch, but couldn't see anything. No luck searching the web or problem
> reports either.
>
> So, my question is whether there is a non-obvious way of forcing a
> program to start in background using the rc infrastructure.
>


Try  command="/usr/sbin/daemon -c -f -p $pidfile PROGRAM"
or some thing like this.



More information about the freebsd-ports mailing list