script to be executed on system startup.

RW fbsd06 at mlists.homeunix.com
Sun Feb 10 03:03:43 UTC 2008


On Sat, 09 Feb 2008 18:22:39 +0000
Matthew Seaman <m.seaman at infracaninophile.co.uk> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> RW wrote:
> > On Thu, 7 Feb 2008 19:19:48 +0530
> > "navneet Upadhyay" <navneet.upadhyay at gmail.com> wrote:
> > 
> >> Hi,
> >>       After putting my script to /etc/rc.d , it gets executed at
> >> startup and the parameter passed to the script is *faststart .*
> >> *I want the same script to be executed when system shuts down , how
> >> can i do that.*
> > 
> > Don't put it in /etc/rc.d/, give it a .sh extension and put it
> > in /usr/local/etc/rc.d/. It will then get stop/start arguments.
> 
> No need to force it to have a .sh extension in /usr/local/etc/rc.d/
> nowadays.  In fact, rather the contrary as a .sh extension causes the
> script to be run in the context of the rc process rather than in a 
> sub-shell.
> 
> In FreeBSD 6.2+ /usr/local/etc/rc.d/ is totally integrated
> with /etc/rc.d and treated exactly the same.  The system re-runs
> rcorder over both of those directories once it has got to the stage
> of mounting all the critical filesystems.

There's a bit more to it than that I think. 

As I understand it, local scripts that contain a "# PROVIDE" line are
integrated into rcorder, local scripts  that don't have that line, but
end in .sh, are executed from  /etc/rc.d/localpkg in the old-style.
AFAIK local scripts that have neither are ignored.

So in short, a user script that simply responds to start/stop needs to
go /usr/local/etc/rc.d/, and it does need a .sh extension.


More information about the freebsd-questions mailing list