"epilogue" script?

krad kraduk at gmail.com
Mon Feb 1 14:52:14 UTC 2016


Have you looked at the cloned_interfaces and autobridge_* rc.conf options,
they might give you what you need?

On 30 January 2016 at 15:34, Valeri Galtsev <galtsev at kicp.uchicago.edu>
wrote:

>
> On Sat, January 30, 2016 8:19 am, Ian Smith wrote:
> > In freebsd-questions Digest, Vol 608, Issue 6, Message: 20
> > On Sat, 30 Jan 2016 11:59:55 +0100 Polytropon <freebsd at edvax.de> wrote:
> >  > On Fri, 29 Jan 2016 16:35:07 -0600 (CST), Valeri Galtsev wrote:
> >  > > Dear Experts,
> >  > >
> >  > > How does one create "epoligue" script in FreeBSD. By "epoligue"
> > script
> >  > > script I mean here the script that is executed after everything
> > described
> >  > > in /etc/rc.conf is done (services started, interfaces initialized
> > etc.). I
> > [..]
> >
> >  > a) RC framework: rc.d
> >    [..]
> >  > See "man rc" and "man rcorder" for details.
> >
> > Sure, if installing new daemon processes, this is the way to go.
> >
> > OTOH, for scripts needing running just once at startup, and/or possibly
> > once at shutdown:
>
> Thanks to everybody who answered, you answers were very instructive! And
> special thanks to Mr Polytropon and Mr Smith! Being quite long on this
> list I have noticed that after reading your posts my knowledge improves as
> after reading a chapter of a good book on the subject. Which leads me to
> realizing that that is exactly what I had to do a few years ago, when I
> migrated servers to FreeBSD: read a good book, and there were several
> recommended on this list some time ago, so this is what I'll do next (plus
> man on all things you all have mentioned).
>
> >
> >  > b) rc.local and rc.shutdown.local
> >  >
> >  > Those files, located in /etc, are "real" shell scripts that will be
> >  > executed "quite late", but not at the lastest possible point. Here
> >  > is an example:
> >  >
> >  >    Creating and/or trimming log files.
> >  >    Starting syslogd.
> >  >    No core dumps found.
> >  >    Additional ABI support: linux.
> >  >    Starting named.
> >  >    Clearing /tmp (X related).
> >  >    Starting local daemons: activity.       <--- /etc/rc.local runnung
> now!
> >  >    Starting ntpd.
> >  >    Starting dhcpd.
> >  >    Starting cupsd.
> >  >    Configuring syscons: keymap keyrate font8x16 font8x14 font8x8.
> >  >    Starting sshd.
> >  >    Starting cron.
> >  >    Starting inetd.
> >  >
> >  > As you can see, there are other services started _after_ rc.local has
> >  > been run. This might cause a problem for you when you need those
> > services
> >  > running.
> >
> > Yes.  I was preparing to post a very similar segment, which also wrote
> > something to stdout when /etc/rc.local was sourced - so thanks!
> >
> >  > See from "man rc":
> >  >
> >  >    The rc.local script contains commands which are pertinent only
> >  >    to a specific site.  Typically, the /usr/local/etc/rc.d/ mechanism
> >  >    is used instead of rc.local these days but if you want to use
> > rc.local,
> >  >    it is still supported.  In this case, it should source /etc/rc.conf
> >  >    and contain additional custom startup code for your system.  The
> best
> >  >    way to handle rc.local, however, is to separate it out into rc.d/
> >  >    style scripts and place them under /usr/local/etc/rc.d/. The
> rc.conf
> >  >    file contains the global system configuration information
> referenced
> >  >    by the startup scripts, while rc.conf.local contains the local
> system
> >  >    configuration.  See rc.conf(5) for more information.
> >  >
> >  > So this might not be "stable".
> >
> > It's stable; been there since the dawn of time and isn't going away :)
> >
> > Valeri, picking up on the above, if you run, say:
> >
> >  % rcorder /etc/rc.d/* /usr/local/etc/rc.d/* | less
> >
> > and find 'local', you'll see where /etc/rc.d/rc/local runs, and that's
> > what runs (sources inline) /etc/rc.local on startup (or in reverse order
> > on shutdown, /etc/rc.shutdown.local)
> >
> > You only need source /etc/rc.conf if using rc.conf variables of course.
> >
> >  > c) /etc/rc hook
> >
> > Totally agree; don't go anywhere near there :)
> >
> >  > > I'm left clueless. As Linux refugee I have a feeling that this is
> > doable
> >  > > without a hack, like making init script, and having "sleep ..." in
> it
> >  > > before payload. In Linux this is done using /etc/rc.d/rc.local which
> > is
> >  > > executed _after_ everything else is done.
> >  >
> >  > As you can see, an rc.d style mechanism will probably be the best
> >  > solution here, except you are fully sure that the time when rc.local
> >  > is run you will be provided with everything you need.
> >
> > We don't really know what Valeri wants to run, and whether it's one or
> > more daemons, maybe including long-running background scripts, that may
> > need start|stop|status control via service(8), or whether it's more
> > simply one or more one-off tasks to be run sometime after startup?
>
> It is rather simple thing which I need. I'm trying to set up openvpn, and
> I need _after_ starting openvpn daemon to add tap0 interface to the bridge
> then set IP on the bridge and on tap0 interface the same as that of real
> interface which is member of this bridge. This is the only way I managed
> to make openvpn really work (by trial and error). I'm kind of not inclined
> to use openvpn's mechanism (which they seemingly have) to do it (it is not
> a first time I spent this long setting up something on FreeBSD, but it was
> the first time I spent this time... hm, not that productive. My ignorance
> is to blame, still...)
>
> Thanks again, everybody. I'm set on right tracks, and should be able to
> successfully finish what I'm doing now.
>
> Valeri
>
> >
> > If the latter, there's nothing at all wrong with starting a script that
> > runs in the background including sleep(1), so long as you don't have an
> > inline sleep that would just pause the whole startup.  Something like ..
> >
> > /etc/rc.local:        (do not use exit or return, this runs within
> /etc/rc)
> > wait=20
> > ( sleep $wait # sleep 5 should usually be more than enough
> >   # perhaps wait for something or other to be running or exist?
> >   # do stuff, maybe including starting further bg jobs, whatever ..
> > ) &
> > echo "my rc.local stuff starts in $wait seconds"
> >
> > cheers, Ian
> >
>
>
> ++++++++++++++++++++++++++++++++++++++++
> Valeri Galtsev
> Sr System Administrator
> Department of Astronomy and Astrophysics
> Kavli Institute for Cosmological Physics
> University of Chicago
> Phone: 773-702-4247
> ++++++++++++++++++++++++++++++++++++++++
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "
> freebsd-questions-unsubscribe at freebsd.org"
>


More information about the freebsd-questions mailing list