Date: Mon, 1 Feb 2016 14:52:11 +0000 From: krad <kraduk@gmail.com> To: galtsev@kicp.uchicago.edu Cc: Ian Smith <smithi@nimnet.asn.au>, Polytropon <freebsd@edvax.de>, FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: "epilogue" script? Message-ID: <CALfReyeFLQQuVJPGWyuqK57F2kJzhm2fgoALd8uTY7TvirUCkw@mail.gmail.com> In-Reply-To: <63014.76.192.184.12.1454168056.squirrel@cosmo.uchicago.edu> References: <mailman.107.1454155202.96392.freebsd-questions@freebsd.org> <20160131000408.N51785@sola.nimnet.asn.au> <63014.76.192.184.12.1454168056.squirrel@cosmo.uchicago.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to " > freebsd-questions-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALfReyeFLQQuVJPGWyuqK57F2kJzhm2fgoALd8uTY7TvirUCkw>