xref: /freebsd/share/man/man8/rc.8 (revision b25a469f94c39badfb17aba2cd33a388a4b12aaf)
1afe61c15SRodney W. Grimes.\" Copyright (c) 1980, 1991, 1993
2afe61c15SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
3afe61c15SRodney W. Grimes.\"
454e347fbSGordon Tetlow.\" Portions of this manual page are Copyrighted by
554e347fbSGordon Tetlow.\"	The NetBSD Foundation.
654e347fbSGordon Tetlow.\"
7afe61c15SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
8afe61c15SRodney W. Grimes.\" modification, are permitted provided that the following conditions
9afe61c15SRodney W. Grimes.\" are met:
10afe61c15SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
11afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
12afe61c15SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
13afe61c15SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
14afe61c15SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
15dda5b397SEitan Adler.\" 3. Neither the name of the University nor the names of its contributors
16afe61c15SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
17afe61c15SRodney W. Grimes.\"    without specific prior written permission.
18afe61c15SRodney W. Grimes.\"
19afe61c15SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20afe61c15SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21afe61c15SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22afe61c15SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23afe61c15SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24afe61c15SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25afe61c15SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26afe61c15SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27afe61c15SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28afe61c15SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29afe61c15SRodney W. Grimes.\" SUCH DAMAGE.
30afe61c15SRodney W. Grimes.\"
31afe61c15SRodney W. Grimes.\"     @(#)rc.8	8.2 (Berkeley) 12/11/93
327f3dea24SPeter Wemm.\" $FreeBSD$
33afe61c15SRodney W. Grimes.\"
340607c830SBrooks Davis.Dd April 25, 2017
35afe61c15SRodney W. Grimes.Dt RC 8
363d45e180SRuslan Ermilov.Os
37afe61c15SRodney W. Grimes.Sh NAME
38afe61c15SRodney W. Grimes.Nm rc
39d962d52aSRuslan Ermilov.Nd command scripts for auto-reboot and daemon startup
40afe61c15SRodney W. Grimes.Sh SYNOPSIS
414b66483fSRuslan Ermilov.Nm
42e4f980d3SJordan K. Hubbard.Nm rc.conf
43e4f980d3SJordan K. Hubbard.Nm rc.conf.local
44d962d52aSRuslan Ermilov.Nm rc.d/
45e4f980d3SJordan K. Hubbard.Nm rc.firewall
46afe61c15SRodney W. Grimes.Nm rc.local
47*b25a469fSEugene Grosbein.Nm rc.resume
48e4f980d3SJordan K. Hubbard.Nm rc.shutdown
4954e347fbSGordon Tetlow.Nm rc.subr
50afe61c15SRodney W. Grimes.Sh DESCRIPTION
518d74f63dSPhilippe CharnierThe
528d74f63dSPhilippe Charnier.Nm
5354e347fbSGordon Tetlowutility is the command script which controls the automatic boot process
5454e347fbSGordon Tetlowafter being called by
5554e347fbSGordon Tetlow.Xr init 8 .
5654e347fbSGordon TetlowThe
57afe61c15SRodney W. Grimes.Nm rc.local
5854e347fbSGordon Tetlowscript contains commands which are pertinent only
59d962d52aSRuslan Ermilovto a specific site.
60d962d52aSRuslan ErmilovTypically, the
61d962d52aSRuslan Ermilov.Pa /usr/local/etc/rc.d/
6254e347fbSGordon Tetlowmechanism is used instead of
6354e347fbSGordon Tetlow.Nm rc.local
6454e347fbSGordon Tetlowthese days but if
6554e347fbSGordon Tetlowyou want to use
66d962d52aSRuslan Ermilov.Nm rc.local ,
67d962d52aSRuslan Ermilovit is still supported.
68d962d52aSRuslan ErmilovIn this case, it should source
69d962d52aSRuslan Ermilov.Pa /etc/rc.conf
7054e347fbSGordon Tetlowand contain additional custom startup code for your system.
7154e347fbSGordon TetlowThe best way to handle
72d962d52aSRuslan Ermilov.Nm rc.local ,
7354e347fbSGordon Tetlowhowever, is to separate it out into
74d962d52aSRuslan Ermilov.Nm rc.d/
75d962d52aSRuslan Ermilovstyle scripts and place them under
76d962d52aSRuslan Ermilov.Pa /usr/local/etc/rc.d/ .
778d74f63dSPhilippe CharnierThe
788d74f63dSPhilippe Charnier.Nm rc.conf
798d74f63dSPhilippe Charnierfile contains the global system configuration information referenced
8054e347fbSGordon Tetlowby the startup scripts, while
81e4f980d3SJordan K. Hubbard.Nm rc.conf.local
826575e6daSRuslan Ermilovcontains the local system configuration.
836575e6daSRuslan ErmilovSee
8454e347fbSGordon Tetlow.Xr rc.conf 5
8554e347fbSGordon Tetlowfor more information.
86e4f980d3SJordan K. Hubbard.Pp
8791e06c00SBen SmithurstThe
88d962d52aSRuslan Ermilov.Nm rc.d/
8991e06c00SBen Smithurstdirectories contain scripts which will be automatically
9091e06c00SBen Smithurstexecuted at boot time and shutdown time.
9109fdf1f8SStefan Eßer.Pp
9209fdf1f8SStefan EßerThe sysrc(8) command provides a scripting interface to modify system
9309fdf1f8SStefan Eßerconfig files.
94d962d52aSRuslan Ermilov.Ss Operation of Nm
9554e347fbSGordon Tetlow.Bl -enum
9654e347fbSGordon Tetlow.It
9754e347fbSGordon TetlowIf autobooting, set
98d962d52aSRuslan Ermilov.Va autoboot Ns = Ns Li yes
9954e347fbSGordon Tetlowand enable a flag
100d962d52aSRuslan Ermilov.Pq Va rc_fast Ns = Ns Li yes ,
10154e347fbSGordon Tetlowwhich prevents the
102d962d52aSRuslan Ermilov.Nm rc.d/
10354e347fbSGordon Tetlowscripts from performing the check for already running processes
10454e347fbSGordon Tetlow(thus speeding up the boot process).
10554e347fbSGordon TetlowThis
106d962d52aSRuslan Ermilov.Va rc_fast Ns = Ns Li yes
107d962d52aSRuslan Ermilovspeedup will not occur when
10854e347fbSGordon Tetlow.Nm
10954e347fbSGordon Tetlowis started up after exiting the single-user shell.
11054e347fbSGordon Tetlow.It
1119eb99781SDoug BartonDetermine whether the system is booting diskless,
1129eb99781SDoug Bartonand if so run the
1139eb99781SDoug Barton.Pa /etc/rc.initdiskless
1149eb99781SDoug Bartonscript.
1159eb99781SDoug Barton.It
1169eb99781SDoug BartonSource
1179eb99781SDoug Barton.Pa /etc/rc.subr
1189eb99781SDoug Bartonto load various
1199eb99781SDoug Barton.Xr rc.subr 8
1209eb99781SDoug Bartonshell functions to use.
1219eb99781SDoug Barton.It
1229eb99781SDoug BartonLoad the configuration files.
1239eb99781SDoug Barton.It
1249eb99781SDoug BartonDetermine if booting in a jail,
1259eb99781SDoug Bartonand add
12681ae4b8dSRuslan Ermilov.Dq Li nojail
1276a774190SJamie Gritton(no jails allowed) or
1286a774190SJamie Gritton.Dq Li nojailvnet
1296a774190SJamie Gritton(only allow vnet-enabled jails) to the list of KEYWORDS to skip in
1309eb99781SDoug Barton.Xr rcorder 8 .
1319eb99781SDoug Barton.It
132cabad264SColin PercivalIf the file
133cabad264SColin Percival.Va ${firstboot_sentinel}
134cabad264SColin Percivaldoes not exist, add
135cabad264SColin Percival.Dq Li firstboot
136cabad264SColin Percivalto the list of KEYWORDS to skip in
137cabad264SColin Percival.Xr rcorder 8 .
138cabad264SColin Percival.It
13954e347fbSGordon TetlowInvoke
14054e347fbSGordon Tetlow.Xr rcorder 8
14154e347fbSGordon Tetlowto order the files in
14254e347fbSGordon Tetlow.Pa /etc/rc.d/
14354e347fbSGordon Tetlowthat do not have a
144d962d52aSRuslan Ermilov.Dq Li nostart
1459eb99781SDoug BartonKEYWORD (refer to
146d962d52aSRuslan Ermilov.Xr rcorder 8 Ns 's
14754e347fbSGordon Tetlow.Fl s
1489eb99781SDoug Bartonflag).
14954e347fbSGordon Tetlow.It
150d962d52aSRuslan ErmilovCall each script in turn using
151d962d52aSRuslan Ermilov.Fn run_rc_script
152d962d52aSRuslan Ermilov(from
15354e347fbSGordon Tetlow.Xr rc.subr 8 ) ,
15454e347fbSGordon Tetlowwhich sets
155d962d52aSRuslan Ermilov.Va $1
15654e347fbSGordon Tetlowto
157d962d52aSRuslan Ermilov.Dq Li start ,
15854e347fbSGordon Tetlowand sources the script in a subshell.
15954e347fbSGordon TetlowIf the script has a
160d962d52aSRuslan Ermilov.Pa .sh
16154e347fbSGordon Tetlowsuffix then it is sourced directly into the current shell.
1629eb99781SDoug BartonStop processing when the script that is the value of the
1639eb99781SDoug Barton.Va $early_late_divider
1649eb99781SDoug Bartonhas been run.
1659eb99781SDoug Barton.It
166cabad264SColin PercivalCheck again to see if the file
167cabad264SColin Percival.Va ${firstboot_sentinel}
168cabad264SColin Percivalexists (in case it is located on a newly mounted file system)
169cabad264SColin Percivaland adjust the list of KEYWORDs to skip appropriately.
170cabad264SColin Percival.It
1719eb99781SDoug BartonRe-run
1729eb99781SDoug Barton.Xr rcorder 8 ,
1739eb99781SDoug Bartonthis time including the scripts in the
1749eb99781SDoug Barton.Va $local_startup
1759eb99781SDoug Bartondirectories.
1769eb99781SDoug BartonIgnore everything up to the
1779eb99781SDoug Barton.Va $early_late_divider ,
1789eb99781SDoug Bartonthen start executing the scripts as described above.
179cabad264SColin Percival.It
180cabad264SColin PercivalIf the file
181cabad264SColin Percival.Va ${firstboot_sentinel}
182cabad264SColin Percivalexists, delete it.
183cabad264SColin PercivalIf the file
184cabad264SColin Percival.Va ${firstboot_sentinel}-reboot
185cabad264SColin Percivalalso exists (because it was created by a script), then delete it and reboot.
18654e347fbSGordon Tetlow.El
187d962d52aSRuslan Ermilov.Ss Operation of Nm rc.shutdown
18854e347fbSGordon Tetlow.Bl -enum
18954e347fbSGordon Tetlow.It
19054e347fbSGordon TetlowSource
19154e347fbSGordon Tetlow.Pa /etc/rc.subr
19254e347fbSGordon Tetlowto load various
19354e347fbSGordon Tetlow.Xr rc.subr 8
19454e347fbSGordon Tetlowshell functions to use.
19554e347fbSGordon Tetlow.It
1969eb99781SDoug BartonLoad the configuration files.
1979eb99781SDoug Barton.It
19854e347fbSGordon TetlowInvoke
19954e347fbSGordon Tetlow.Xr rcorder 8
20054e347fbSGordon Tetlowto order the files in
20154e347fbSGordon Tetlow.Pa /etc/rc.d/
2029eb99781SDoug Bartonand the
2039eb99781SDoug Barton.Va $local_startup
2049eb99781SDoug Bartondirectories
20554e347fbSGordon Tetlowthat have a
206d962d52aSRuslan Ermilov.Dq Li shutdown
2079eb99781SDoug BartonKEYWORD (refer to
208d962d52aSRuslan Ermilov.Xr rcorder 8 Ns 's
20954e347fbSGordon Tetlow.Fl k
21054e347fbSGordon Tetlowflag),
211d962d52aSRuslan Ermilovreverse that order, and assign the result to a variable.
21254e347fbSGordon Tetlow.It
213d962d52aSRuslan ErmilovCall each script in turn using
214d962d52aSRuslan Ermilov.Fn run_rc_script
215d962d52aSRuslan Ermilov(from
21654e347fbSGordon Tetlow.Xr rc.subr 8 ) ,
21754e347fbSGordon Tetlowwhich sets
218d962d52aSRuslan Ermilov.Va $1
21954e347fbSGordon Tetlowto
220d962d52aSRuslan Ermilov.Dq Li stop ,
22154e347fbSGordon Tetlowand sources the script in a subshell.
22254e347fbSGordon TetlowIf the script has a
223d962d52aSRuslan Ermilov.Pa .sh
22454e347fbSGordon Tetlowsuffix then it is sourced directly into the current shell.
22554e347fbSGordon Tetlow.El
226d962d52aSRuslan Ermilov.Ss Contents of Nm rc.d/
22754e347fbSGordon Tetlow.Nm rc.d/
22854e347fbSGordon Tetlowis located in
229d962d52aSRuslan Ermilov.Pa /etc/rc.d/ .
23054e347fbSGordon TetlowThe following file naming conventions are currently used in
23154e347fbSGordon Tetlow.Nm rc.d/ :
232d962d52aSRuslan Ermilov.Bl -tag -width ".Pa ALLUPPERCASE" -offset indent
23354e347fbSGordon Tetlow.It Pa ALLUPPERCASE
23454e347fbSGordon TetlowScripts that are
235d962d52aSRuslan Ermilov.Dq placeholders
23654e347fbSGordon Tetlowto ensure that certain operations are performed before others.
23754e347fbSGordon TetlowIn order of startup, these are:
238d962d52aSRuslan Ermilov.Bl -tag -width ".Pa NETWORKING"
23954e347fbSGordon Tetlow.It Pa NETWORKING
24054e347fbSGordon TetlowEnsure basic network services are running, including general
2419eb99781SDoug Bartonnetwork configuration.
24254e347fbSGordon Tetlow.It Pa SERVERS
2439eb99781SDoug BartonEnsure basic services
24454e347fbSGordon Tetlowexist for services that start early (such as
24554c22eeaSSergey Kandaurov.Pa nisdomain ) ,
246d962d52aSRuslan Ermilovbecause they are required by
24754e347fbSGordon Tetlow.Pa DAEMON
24854e347fbSGordon Tetlowbelow.
24954e347fbSGordon Tetlow.It Pa DAEMON
25054e347fbSGordon TetlowCheck-point before all general purpose daemons such as
25154e347fbSGordon Tetlow.Pa lpd
25254e347fbSGordon Tetlowand
25354e347fbSGordon Tetlow.Pa ntpd .
25454e347fbSGordon Tetlow.It Pa LOGIN
25554e347fbSGordon TetlowCheck-point before user login services
25654e347fbSGordon Tetlow.Pa ( inetd
25754e347fbSGordon Tetlowand
25854e347fbSGordon Tetlow.Pa sshd ) ,
25954e347fbSGordon Tetlowas well as services which might run commands as users
26054e347fbSGordon Tetlow.Pa ( cron
26154e347fbSGordon Tetlowand
26254e347fbSGordon Tetlow.Pa sendmail ) .
26354e347fbSGordon Tetlow.El
26454e347fbSGordon Tetlow.It Pa foo.sh
26554e347fbSGordon TetlowScripts that are to be sourced into the current shell rather than a subshell
26654e347fbSGordon Tetlowhave a
267d962d52aSRuslan Ermilov.Pa .sh
26854e347fbSGordon Tetlowsuffix.
26954e347fbSGordon TetlowExtreme care must be taken in using this, as the startup sequence will
27054e347fbSGordon Tetlowterminate if the script does.
27154e347fbSGordon Tetlow.It Pa bar
27254e347fbSGordon TetlowScripts that are sourced in a subshell.
2733d03791bSMike MakonnenThe boot does not stop if such a script terminates with a non-zero status,
2743d03791bSMike Makonnenbut a script can stop the boot if necessary by invoking the
2753d03791bSMike Makonnen.Fn stop_boot
2763d03791bSMike Makonnenfunction (from
2773d03791bSMike Makonnen.Xr rc.subr 8 ) .
27854e347fbSGordon Tetlow.El
27954e347fbSGordon Tetlow.Pp
28054e347fbSGordon TetlowEach script should contain
28154e347fbSGordon Tetlow.Xr rcorder 8
28254e347fbSGordon Tetlowkeywords, especially an appropriate
283d962d52aSRuslan Ermilov.Dq Li PROVIDE
28454e347fbSGordon Tetlowentry, and if necessary
285d962d52aSRuslan Ermilov.Dq Li REQUIRE
28654e347fbSGordon Tetlowand
287d962d52aSRuslan Ermilov.Dq Li BEFORE
288d962d52aSRuslan Ermilovkeywords.
28954e347fbSGordon Tetlow.Pp
29054e347fbSGordon TetlowEach script is expected to support at least the following arguments, which
291d962d52aSRuslan Ermilovare automatically supported if it uses the
292d962d52aSRuslan Ermilov.Fn run_rc_command
293d962d52aSRuslan Ermilovfunction:
294d962d52aSRuslan Ermilov.Bl -tag -width ".Cm restart" -offset indent
295d962d52aSRuslan Ermilov.It Cm start
29654e347fbSGordon TetlowStart the service.
29754e347fbSGordon TetlowThis should check that the service is to be started as specified by
29854e347fbSGordon Tetlow.Xr rc.conf 5 .
29954e347fbSGordon TetlowAlso checks if the service is already running and refuses to start if
30054e347fbSGordon Tetlowit is.
30154e347fbSGordon TetlowThis latter check is not performed by standard
30254e347fbSGordon Tetlow.Fx
30354e347fbSGordon Tetlowscripts if the system is starting directly to multi-user mode, to
30454e347fbSGordon Tetlowspeed up the boot process.
30554e347fbSGordon TetlowIf
306d962d52aSRuslan Ermilov.Cm forcestart
30754e347fbSGordon Tetlowis given, ignore the
30854e347fbSGordon Tetlow.Xr rc.conf 5
30954e347fbSGordon Tetlowcheck and start anyway.
310d962d52aSRuslan Ermilov.It Cm stop
31154e347fbSGordon TetlowIf the service is to be started as specified by
31254e347fbSGordon Tetlow.Xr rc.conf 5 ,
31354e347fbSGordon Tetlowstop the service.
314d962d52aSRuslan ErmilovThis should check that the service is running and complain if it is not.
31554e347fbSGordon TetlowIf
316d962d52aSRuslan Ermilov.Cm forcestop
31754e347fbSGordon Tetlowis given, ignore the
31854e347fbSGordon Tetlow.Xr rc.conf 5
31954e347fbSGordon Tetlowcheck and attempt to stop.
320d962d52aSRuslan Ermilov.It Cm restart
32154e347fbSGordon TetlowPerform a
322d962d52aSRuslan Ermilov.Cm stop
32354e347fbSGordon Tetlowthen a
324d962d52aSRuslan Ermilov.Cm start .
325d962d52aSRuslan Ermilov.It Cm status
32654e347fbSGordon TetlowIf the script starts a process (rather than performing a one-off
32754e347fbSGordon Tetlowoperation), show the status of the process.
328d962d52aSRuslan ErmilovOtherwise it is not necessary to support this argument.
32954e347fbSGordon TetlowDefaults to displaying the process ID of the program (if running).
3301980d11bSLars Engels.It Cm describe
3311980d11bSLars EngelsPrint a short description of what the script does.
3321980d11bSLars Engels.It Cm extracommands
3331980d11bSLars EngelsPrint the script's non-standard commands.
334d962d52aSRuslan Ermilov.It Cm poll
33554e347fbSGordon TetlowIf the script starts a process (rather than performing a one-off
33654e347fbSGordon Tetlowoperation), wait for the command to exit.
337d962d52aSRuslan ErmilovOtherwise it is not necessary to support this argument.
33849cede74SDag-Erling Smørgrav.It Cm enabled
33949cede74SDag-Erling SmørgravReturn 0 if the service is enabled and 1 if it is not.
34049cede74SDag-Erling SmørgravThis command does not print anything.
341d962d52aSRuslan Ermilov.It Cm rcvar
34254e347fbSGordon TetlowDisplay which
34354e347fbSGordon Tetlow.Xr rc.conf 5
34454e347fbSGordon Tetlowvariables are used to control the startup of the service (if any).
34554e347fbSGordon Tetlow.El
34654e347fbSGordon Tetlow.Pp
34754e347fbSGordon TetlowIf a script must implement additional commands it can list them in
34854e347fbSGordon Tetlowthe
349d962d52aSRuslan Ermilov.Va extra_commands
350d962d52aSRuslan Ermilovvariable, and define their actions in a variable constructed from
35154e347fbSGordon Tetlowthe command name (see the
35254e347fbSGordon Tetlow.Sx EXAMPLES
35354e347fbSGordon Tetlowsection).
35454e347fbSGordon Tetlow.Pp
35554e347fbSGordon TetlowThe following key points apply to old-style scripts in
356d962d52aSRuslan Ermilov.Pa /usr/local/etc/rc.d/ :
357d962d52aSRuslan Ermilov.Bl -bullet
35891e06c00SBen Smithurst.It
35991e06c00SBen SmithurstScripts are only executed if their
36091e06c00SBen Smithurst.Xr basename 1
36191e06c00SBen Smithurstmatches the shell globbing pattern
36291e06c00SBen Smithurst.Pa *.sh ,
36391e06c00SBen Smithurstand they are executable.
36491e06c00SBen SmithurstAny other files or directories present within the directory are silently
36591e06c00SBen Smithurstignored.
36691e06c00SBen Smithurst.It
36791e06c00SBen SmithurstWhen a script is executed at boot time, it is passed the string
368d962d52aSRuslan Ermilov.Dq Li start
36991e06c00SBen Smithurstas its first and only argument.
37091e06c00SBen SmithurstAt shutdown time, it is passed the string
371d962d52aSRuslan Ermilov.Dq Li stop
37291e06c00SBen Smithurstas its first and only argument.
37391e06c00SBen SmithurstAll
374d962d52aSRuslan Ermilov.Nm rc.d/
375d4bbfee2SJens Schweikhardtscripts are expected to handle these arguments appropriately.
37691e06c00SBen SmithurstIf no action needs to be taken at a given time
377d962d52aSRuslan Ermilov(either boot time or shutdown time),
37891e06c00SBen Smithurstthe script should exit successfully and without producing an error message.
37991e06c00SBen Smithurst.It
38091e06c00SBen SmithurstThe scripts within each directory are executed in lexicographical order.
38191e06c00SBen SmithurstIf a specific order is required,
38291e06c00SBen Smithurstnumbers may be used as a prefix to the existing filenames,
38391e06c00SBen Smithurstso for example
38491e06c00SBen Smithurst.Pa 100.foo
38591e06c00SBen Smithurstwould be executed before
38691e06c00SBen Smithurst.Pa 200.bar ;
38791e06c00SBen Smithurstwithout the numeric prefixes the opposite would be true.
38854e347fbSGordon Tetlow.It
38991e06c00SBen SmithurstThe output from each script is traditionally a space character,
39091e06c00SBen Smithurstfollowed by the name of the software package being started or shut down,
39191e06c00SBen Smithurst.Em without
39291e06c00SBen Smithursta trailing newline character (see the
39391e06c00SBen Smithurst.Sx EXAMPLES
39491e06c00SBen Smithurstsection).
39554e347fbSGordon Tetlow.El
396d962d52aSRuslan Ermilov.Sh SCRIPTS OF INTEREST
39754e347fbSGordon TetlowWhen an automatic reboot is in progress,
39854e347fbSGordon Tetlow.Nm
39954e347fbSGordon Tetlowis invoked with the argument
400d962d52aSRuslan Ermilov.Cm autoboot .
40154e347fbSGordon TetlowOne of the scripts run from
402d962d52aSRuslan Ermilov.Pa /etc/rc.d/
40354e347fbSGordon Tetlowis
40454e347fbSGordon Tetlow.Pa /etc/rc.d/fsck .
40554e347fbSGordon TetlowThis script runs
40654e347fbSGordon Tetlow.Xr fsck 8
40754e347fbSGordon Tetlowwith option
40854e347fbSGordon Tetlow.Fl p
40954e347fbSGordon Tetlowand
41054e347fbSGordon Tetlow.Fl F
411d962d52aSRuslan Ermilovto
412d962d52aSRuslan Ermilov.Dq preen
413d962d52aSRuslan Ermilovall the disks of minor inconsistencies resulting
414d962d52aSRuslan Ermilovfrom the last system shutdown.
415d962d52aSRuslan ErmilovIf this fails, then checks/repairs of serious inconsistencies
416d962d52aSRuslan Ermilovcaused by hardware or software failure will be performed
417d962d52aSRuslan Ermilovin the background at the end of the booting process.
418d962d52aSRuslan ErmilovIf
419d962d52aSRuslan Ermilov.Cm autoboot
420d962d52aSRuslan Ermilovis not set, when going from single-user to multi-user mode for example,
421d962d52aSRuslan Ermilovthe script does not do anything.
42291e06c00SBen Smithurst.Pp
42354e347fbSGordon TetlowThe
424d962d52aSRuslan Ermilov.Pa /etc/rc.d/local
42554e347fbSGordon Tetlowscript can execute scripts from multiple
426d962d52aSRuslan Ermilov.Nm rc.d/
42791e06c00SBen Smithurstdirectories.
4289a0e6be2SXin LIThe default location includes
4299a0e6be2SXin LI.Pa /usr/local/etc/rc.d/ ,
43091e06c00SBen Smithurstbut these may be overridden with the
43191e06c00SBen Smithurst.Va local_startup
43291e06c00SBen Smithurst.Xr rc.conf 5
43391e06c00SBen Smithurstvariable.
43491e06c00SBen Smithurst.Pp
4358d74f63dSPhilippe CharnierThe
436d962d52aSRuslan Ermilov.Pa /etc/rc.d/serial
4378d74f63dSPhilippe Charnierscript is used to set any special configurations for serial devices.
438afe61c15SRodney W. Grimes.Pp
4398d74f63dSPhilippe CharnierThe
4408d74f63dSPhilippe Charnier.Nm rc.firewall
4418d74f63dSPhilippe Charnierscript is used to configure rules for the kernel based firewall
4421111b49cSSheldon Hearnservice.
4431111b49cSSheldon HearnIt has several possible options:
444e4f980d3SJordan K. Hubbard.Pp
445d962d52aSRuslan Ermilov.Bl -tag -width ".Ar filename" -compact -offset indent
446d962d52aSRuslan Ermilov.It Cm open
447d962d52aSRuslan Ermilovwill allow anyone in
448d962d52aSRuslan Ermilov.It Cm client
449d962d52aSRuslan Ermilovwill try to protect just this machine
450d962d52aSRuslan Ermilov.It Cm simple
451d962d52aSRuslan Ermilovwill try to protect a whole network
452d962d52aSRuslan Ermilov.It Cm closed
453d962d52aSRuslan Ermilovtotally disables IP services except via
454d962d52aSRuslan Ermilov.Pa lo0
455d962d52aSRuslan Ermilovinterface
456d962d52aSRuslan Ermilov.It Cm UNKNOWN
457d962d52aSRuslan Ermilovdisables the loading of firewall rules
458d962d52aSRuslan Ermilov.It Ar filename
459e4f980d3SJordan K. Hubbardwill load the rules in the given filename (full path required).
460e4f980d3SJordan K. Hubbard.El
461e4f980d3SJordan K. Hubbard.Pp
46254e347fbSGordon TetlowMost daemons, including network related daemons, have their own script in
463d962d52aSRuslan Ermilov.Pa /etc/rc.d/ ,
46454e347fbSGordon Tetlowwhich can be used to start, stop, and check the status of the service.
465e4f980d3SJordan K. Hubbard.Pp
46654e347fbSGordon TetlowAny architecture specific scripts, such as
46754e347fbSGordon Tetlow.Pa /etc/rc.d/apm
46854e347fbSGordon Tetlowfor example, specifically check that they are on that architecture
46954e347fbSGordon Tetlowbefore starting the daemon.
470e4f980d3SJordan K. Hubbard.Pp
47154e347fbSGordon TetlowFollowing tradition, all startup files reside in
472afe61c15SRodney W. Grimes.Pa /etc .
4739cbda590SRuslan Ermilov.Sh FILES
474e9074458SGlen Barber.Bl -tag -compact -width Pa
4759cbda590SRuslan Ermilov.It Pa /etc/rc
4769cbda590SRuslan Ermilov.It Pa /etc/rc.conf
4779cbda590SRuslan Ermilov.It Pa /etc/rc.conf.local
4789cbda590SRuslan Ermilov.It Pa /etc/rc.d/
4799cbda590SRuslan Ermilov.It Pa /etc/rc.firewall
4809cbda590SRuslan Ermilov.It Pa /etc/rc.local
4819cbda590SRuslan Ermilov.It Pa /etc/rc.shutdown
4829cbda590SRuslan Ermilov.It Pa /etc/rc.subr
4839cbda590SRuslan Ermilov.It Pa /var/run/dmesg.boot
484a3f9c9fcSRuslan Ermilov.Xr dmesg 8
4859cbda590SRuslan Ermilovresults soon after the
4869cbda590SRuslan Ermilov.Nm
4879cbda590SRuslan Ermilovprocess begins.
488a3f9c9fcSRuslan ErmilovUseful when
489a3f9c9fcSRuslan Ermilov.Xr dmesg 8
490a3f9c9fcSRuslan Ermilovbuffer in the kernel no longer has this information.
4919cbda590SRuslan Ermilov.El
49291e06c00SBen Smithurst.Sh EXAMPLES
49354e347fbSGordon TetlowThe following is a minimal
494d962d52aSRuslan Ermilov.Nm rc.d/
495d962d52aSRuslan Ermilovstyle script.
496d962d52aSRuslan ErmilovMost scripts require little more than the following.
49754e347fbSGordon Tetlow.Bd -literal -offset indent
49854e347fbSGordon Tetlow#!/bin/sh
49954e347fbSGordon Tetlow#
50054e347fbSGordon Tetlow
50154e347fbSGordon Tetlow# PROVIDE: foo
50254e347fbSGordon Tetlow# REQUIRE: bar_service_required_to_precede_foo
50354e347fbSGordon Tetlow
504d962d52aSRuslan Ermilov\&. /etc/rc.subr
50554e347fbSGordon Tetlow
50654e347fbSGordon Tetlowname="foo"
507c86072f5SDoug Bartonrcvar=foo_enable
50854e347fbSGordon Tetlowcommand="/usr/local/bin/foo"
50954e347fbSGordon Tetlow
51054e347fbSGordon Tetlowload_rc_config $name
51154e347fbSGordon Tetlowrun_rc_command "$1"
51254e347fbSGordon Tetlow.Ed
51354e347fbSGordon Tetlow.Pp
514d962d52aSRuslan ErmilovCertain scripts may want to provide enhanced functionality.
515d962d52aSRuslan ErmilovThe user may access this functionality through additional commands.
516d962d52aSRuslan ErmilovThe script may list and define as many commands at it needs.
51754e347fbSGordon Tetlow.Bd -literal -offset indent
51854e347fbSGordon Tetlow#!/bin/sh
51954e347fbSGordon Tetlow#
52054e347fbSGordon Tetlow
52154e347fbSGordon Tetlow# PROVIDE: foo
52254e347fbSGordon Tetlow# REQUIRE: bar_service_required_to_precede_foo
52354e347fbSGordon Tetlow# BEFORE:  baz_service_requiring_foo_to_precede_it
52454e347fbSGordon Tetlow
525d962d52aSRuslan Ermilov\&. /etc/rc.subr
52654e347fbSGordon Tetlow
52754e347fbSGordon Tetlowname="foo"
528c86072f5SDoug Bartonrcvar=foo_enable
52954e347fbSGordon Tetlowcommand="/usr/local/bin/foo"
53054e347fbSGordon Tetlowextra_commands="nop hello"
53154e347fbSGordon Tetlowhello_cmd="echo Hello World."
53254e347fbSGordon Tetlownop_cmd="do_nop"
53354e347fbSGordon Tetlow
53454e347fbSGordon Tetlowdo_nop()
53554e347fbSGordon Tetlow{
53654e347fbSGordon Tetlow	echo "I do nothing."
53754e347fbSGordon Tetlow}
53854e347fbSGordon Tetlow
53954e347fbSGordon Tetlowload_rc_config $name
54054e347fbSGordon Tetlowrun_rc_command "$1"
54154e347fbSGordon Tetlow.Ed
54254e347fbSGordon Tetlow.Pp
54391e06c00SBen SmithurstAs all processes are killed by
54491e06c00SBen Smithurst.Xr init 8
54591e06c00SBen Smithurstat shutdown, the explicit
54691e06c00SBen Smithurst.Xr kill 1
54791e06c00SBen Smithurstis unnecessary, but is often included.
548afe61c15SRodney W. Grimes.Sh SEE ALSO
54991e06c00SBen Smithurst.Xr kill 1 ,
550e4f980d3SJordan K. Hubbard.Xr rc.conf 5 ,
551afe61c15SRodney W. Grimes.Xr init 8 ,
552*b25a469fSEugene Grosbein.Xr rc.resume 8 ,
5531c85060aSRuslan Ermilov.Xr rc.subr 8 ,
554121f7af1SBaptiste Daroussin.Xr rcorder 8 ,
555afe61c15SRodney W. Grimes.Xr reboot 8 ,
556e5accd3cSStefan Eßer.Xr savecore 8 ,
557e5accd3cSStefan Eßer.Xr sysrc 8
558afe61c15SRodney W. Grimes.Sh HISTORY
559afe61c15SRodney W. GrimesThe
560afe61c15SRodney W. Grimes.Nm
5618d74f63dSPhilippe Charnierutility appeared in
562afe61c15SRodney W. Grimes.Bx 4.0 .
563