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

Javier Martín Rueda jmrueda at diatel.upm.es
Thu Jan 24 07:47:14 UTC 2013


On 22/01/13 16:36, Greg Larkin wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 1/22/13 10:29 AM, Grzegorz Blach wrote:
>> 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.
>>
> Here's a full example of that in the ViewVC rc.d script:
>
> http://svnweb.freebsd.org/ports/head/devel/viewvc/files/viewvc.in?revision=300896&view=markup
>
> Hope it helps,
> Greg
> - -- 
> Greg Larkin
>
> http://www.FreeBSD.org/           - The Power To Serve
> http://www.sourcehosting.net/     - Ready. Set. Code.
> http://twitter.com/cpucycle/      - Follow you, follow me
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.13 (Darwin)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iEYEARECAAYFAlD+sf4ACgkQ0sRouByUApAdBgCfdwmbfCokv0Rxm50pTaqZkAkF
> BGoAnjl27+rGvyV3DP4W5rsphL2dbZBd
> =Vi59
> -----END PGP SIGNATURE-----
> _______________________________________________
> freebsd-ports at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
Thank you all for your suggestions. In the end I chose to follow the 
viewvc example, and I just submitted an update to the port.



More information about the freebsd-ports mailing list