xref: /freebsd/share/man/man8/rc.8 (revision c2ebbb5572e3f3fef1f8cf69e819925e3b409d8f)
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.\"
34*c2ebbb55SJohn-Mark Gurney.Dd October 6, 2020
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
47b25a469fSEugene 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
92ce6c81b9SAndriy GaponThe
93ce6c81b9SAndriy Gapon.Xr service 8
9409b238e7SAndriy Gaponcommand provides a convenient interface to manage rc.d services.
95ce6c81b9SAndriy Gapon.Pp
96ce6c81b9SAndriy GaponThe
97ce6c81b9SAndriy Gapon.Xr sysrc 8
98ce6c81b9SAndriy Gaponcommand provides a scripting interface to modify system config files.
99d962d52aSRuslan Ermilov.Ss Operation of Nm
10054e347fbSGordon Tetlow.Bl -enum
10154e347fbSGordon Tetlow.It
10254e347fbSGordon TetlowIf autobooting, set
103d962d52aSRuslan Ermilov.Va autoboot Ns = Ns Li yes
10454e347fbSGordon Tetlowand enable a flag
105d962d52aSRuslan Ermilov.Pq Va rc_fast Ns = Ns Li yes ,
10654e347fbSGordon Tetlowwhich prevents the
107d962d52aSRuslan Ermilov.Nm rc.d/
10854e347fbSGordon Tetlowscripts from performing the check for already running processes
10954e347fbSGordon Tetlow(thus speeding up the boot process).
11054e347fbSGordon TetlowThis
111d962d52aSRuslan Ermilov.Va rc_fast Ns = Ns Li yes
112d962d52aSRuslan Ermilovspeedup will not occur when
11354e347fbSGordon Tetlow.Nm
11454e347fbSGordon Tetlowis started up after exiting the single-user shell.
11554e347fbSGordon Tetlow.It
1169eb99781SDoug BartonDetermine whether the system is booting diskless,
1179eb99781SDoug Bartonand if so run the
1189eb99781SDoug Barton.Pa /etc/rc.initdiskless
1199eb99781SDoug Bartonscript.
1209eb99781SDoug Barton.It
1219eb99781SDoug BartonSource
1229eb99781SDoug Barton.Pa /etc/rc.subr
1239eb99781SDoug Bartonto load various
1249eb99781SDoug Barton.Xr rc.subr 8
1259eb99781SDoug Bartonshell functions to use.
1269eb99781SDoug Barton.It
1279eb99781SDoug BartonLoad the configuration files.
1289eb99781SDoug Barton.It
1299eb99781SDoug BartonDetermine if booting in a jail,
1309eb99781SDoug Bartonand add
13181ae4b8dSRuslan Ermilov.Dq Li nojail
1326a774190SJamie Gritton(no jails allowed) or
1336a774190SJamie Gritton.Dq Li nojailvnet
1346a774190SJamie Gritton(only allow vnet-enabled jails) to the list of KEYWORDS to skip in
1359eb99781SDoug Barton.Xr rcorder 8 .
1369eb99781SDoug Barton.It
137cabad264SColin PercivalIf the file
138cabad264SColin Percival.Va ${firstboot_sentinel}
139cabad264SColin Percivaldoes not exist, add
140cabad264SColin Percival.Dq Li firstboot
141cabad264SColin Percivalto the list of KEYWORDS to skip in
142cabad264SColin Percival.Xr rcorder 8 .
143cabad264SColin Percival.It
14454e347fbSGordon TetlowInvoke
14554e347fbSGordon Tetlow.Xr rcorder 8
14654e347fbSGordon Tetlowto order the files in
14754e347fbSGordon Tetlow.Pa /etc/rc.d/
14854e347fbSGordon Tetlowthat do not have a
149d962d52aSRuslan Ermilov.Dq Li nostart
1509eb99781SDoug BartonKEYWORD (refer to
151d962d52aSRuslan Ermilov.Xr rcorder 8 Ns 's
15254e347fbSGordon Tetlow.Fl s
1539eb99781SDoug Bartonflag).
15454e347fbSGordon Tetlow.It
155d962d52aSRuslan ErmilovCall each script in turn using
156d962d52aSRuslan Ermilov.Fn run_rc_script
157d962d52aSRuslan Ermilov(from
15854e347fbSGordon Tetlow.Xr rc.subr 8 ) ,
15954e347fbSGordon Tetlowwhich sets
160d962d52aSRuslan Ermilov.Va $1
16154e347fbSGordon Tetlowto
162d962d52aSRuslan Ermilov.Dq Li start ,
16354e347fbSGordon Tetlowand sources the script in a subshell.
1649eb99781SDoug BartonStop processing when the script that is the value of the
1659eb99781SDoug Barton.Va $early_late_divider
1669eb99781SDoug Bartonhas been run.
1679eb99781SDoug Barton.It
168cabad264SColin PercivalCheck again to see if the file
169cabad264SColin Percival.Va ${firstboot_sentinel}
170cabad264SColin Percivalexists (in case it is located on a newly mounted file system)
171cabad264SColin Percivaland adjust the list of KEYWORDs to skip appropriately.
172cabad264SColin Percival.It
1739eb99781SDoug BartonRe-run
1749eb99781SDoug Barton.Xr rcorder 8 ,
1759eb99781SDoug Bartonthis time including the scripts in the
1769eb99781SDoug Barton.Va $local_startup
1779eb99781SDoug Bartondirectories.
1789eb99781SDoug BartonIgnore everything up to the
1799eb99781SDoug Barton.Va $early_late_divider ,
1809eb99781SDoug Bartonthen start executing the scripts as described above.
181cabad264SColin Percival.It
182cabad264SColin PercivalIf the file
183cabad264SColin Percival.Va ${firstboot_sentinel}
184cabad264SColin Percivalexists, delete it.
185cabad264SColin PercivalIf the file
186cabad264SColin Percival.Va ${firstboot_sentinel}-reboot
187cabad264SColin Percivalalso exists (because it was created by a script), then delete it and reboot.
18854e347fbSGordon Tetlow.El
189d962d52aSRuslan Ermilov.Ss Operation of Nm rc.shutdown
19054e347fbSGordon Tetlow.Bl -enum
19154e347fbSGordon Tetlow.It
1925fda0d60SAndriy GaponSet
1935fda0d60SAndriy Gapon.Va rc_shutdown
1945fda0d60SAndriy Gaponto the value of the first argument passed to
1955fda0d60SAndriy Gapon.Nm rc.shutdown
1965fda0d60SAndriy Gaponor to
1975fda0d60SAndriy Gapon.Dq Li unspecified
1985fda0d60SAndriy Gaponif no argument was passed.
1995fda0d60SAndriy Gapon.It
20054e347fbSGordon TetlowSource
20154e347fbSGordon Tetlow.Pa /etc/rc.subr
20254e347fbSGordon Tetlowto load various
20354e347fbSGordon Tetlow.Xr rc.subr 8
20454e347fbSGordon Tetlowshell functions to use.
20554e347fbSGordon Tetlow.It
2069eb99781SDoug BartonLoad the configuration files.
2079eb99781SDoug Barton.It
20854e347fbSGordon TetlowInvoke
20954e347fbSGordon Tetlow.Xr rcorder 8
21054e347fbSGordon Tetlowto order the files in
21154e347fbSGordon Tetlow.Pa /etc/rc.d/
2129eb99781SDoug Bartonand the
2139eb99781SDoug Barton.Va $local_startup
2149eb99781SDoug Bartondirectories
21554e347fbSGordon Tetlowthat have a
216d962d52aSRuslan Ermilov.Dq Li shutdown
2179eb99781SDoug BartonKEYWORD (refer to
218d962d52aSRuslan Ermilov.Xr rcorder 8 Ns 's
21954e347fbSGordon Tetlow.Fl k
22054e347fbSGordon Tetlowflag),
221d962d52aSRuslan Ermilovreverse that order, and assign the result to a variable.
22254e347fbSGordon Tetlow.It
223d962d52aSRuslan ErmilovCall each script in turn using
224d962d52aSRuslan Ermilov.Fn run_rc_script
225d962d52aSRuslan Ermilov(from
22654e347fbSGordon Tetlow.Xr rc.subr 8 ) ,
22754e347fbSGordon Tetlowwhich sets
228d962d52aSRuslan Ermilov.Va $1
22954e347fbSGordon Tetlowto
230ce6c81b9SAndriy Gapon.Dq Li faststop ,
23154e347fbSGordon Tetlowand sources the script in a subshell.
23254e347fbSGordon Tetlow.El
233d962d52aSRuslan Ermilov.Ss Contents of Nm rc.d/
23454e347fbSGordon Tetlow.Nm rc.d/
23554e347fbSGordon Tetlowis located in
236d962d52aSRuslan Ermilov.Pa /etc/rc.d/ .
23754e347fbSGordon TetlowThe following file naming conventions are currently used in
23854e347fbSGordon Tetlow.Nm rc.d/ :
239d962d52aSRuslan Ermilov.Bl -tag -width ".Pa ALLUPPERCASE" -offset indent
24054e347fbSGordon Tetlow.It Pa ALLUPPERCASE
24154e347fbSGordon TetlowScripts that are
242d962d52aSRuslan Ermilov.Dq placeholders
24354e347fbSGordon Tetlowto ensure that certain operations are performed before others.
24454e347fbSGordon TetlowIn order of startup, these are:
245*c2ebbb55SJohn-Mark Gurney.Bl -tag -width ".Pa FILESYSTEMS"
246*c2ebbb55SJohn-Mark Gurney.It Pa FILESYSTEMS
247*c2ebbb55SJohn-Mark GurneyEnsure that root and other critical file systems are mounted.
248*c2ebbb55SJohn-Mark GurneyThis is the default
249*c2ebbb55SJohn-Mark Gurney.Va $early_late_divider .
25054e347fbSGordon Tetlow.It Pa NETWORKING
25154e347fbSGordon TetlowEnsure basic network services are running, including general
2529eb99781SDoug Bartonnetwork configuration.
25354e347fbSGordon Tetlow.It Pa SERVERS
2549eb99781SDoug BartonEnsure basic services
25554e347fbSGordon Tetlowexist for services that start early (such as
25654c22eeaSSergey Kandaurov.Pa nisdomain ) ,
257d962d52aSRuslan Ermilovbecause they are required by
25854e347fbSGordon Tetlow.Pa DAEMON
25954e347fbSGordon Tetlowbelow.
26054e347fbSGordon Tetlow.It Pa DAEMON
26154e347fbSGordon TetlowCheck-point before all general purpose daemons such as
26254e347fbSGordon Tetlow.Pa lpd
26354e347fbSGordon Tetlowand
26454e347fbSGordon Tetlow.Pa ntpd .
26554e347fbSGordon Tetlow.It Pa LOGIN
26654e347fbSGordon TetlowCheck-point before user login services
26754e347fbSGordon Tetlow.Pa ( inetd
26854e347fbSGordon Tetlowand
26954e347fbSGordon Tetlow.Pa sshd ) ,
27054e347fbSGordon Tetlowas well as services which might run commands as users
27154e347fbSGordon Tetlow.Pa ( cron
27254e347fbSGordon Tetlowand
27354e347fbSGordon Tetlow.Pa sendmail ) .
27454e347fbSGordon Tetlow.El
27554e347fbSGordon Tetlow.It Pa bar
27654e347fbSGordon TetlowScripts that are sourced in a subshell.
2773d03791bSMike MakonnenThe boot does not stop if such a script terminates with a non-zero status,
2783d03791bSMike Makonnenbut a script can stop the boot if necessary by invoking the
2793d03791bSMike Makonnen.Fn stop_boot
2803d03791bSMike Makonnenfunction (from
2813d03791bSMike Makonnen.Xr rc.subr 8 ) .
28254e347fbSGordon Tetlow.El
28354e347fbSGordon Tetlow.Pp
28454e347fbSGordon TetlowEach script should contain
28554e347fbSGordon Tetlow.Xr rcorder 8
28654e347fbSGordon Tetlowkeywords, especially an appropriate
287d962d52aSRuslan Ermilov.Dq Li PROVIDE
28854e347fbSGordon Tetlowentry, and if necessary
289d962d52aSRuslan Ermilov.Dq Li REQUIRE
29054e347fbSGordon Tetlowand
291d962d52aSRuslan Ermilov.Dq Li BEFORE
292d962d52aSRuslan Ermilovkeywords.
29354e347fbSGordon Tetlow.Pp
29454e347fbSGordon TetlowEach script is expected to support at least the following arguments, which
295d962d52aSRuslan Ermilovare automatically supported if it uses the
296d962d52aSRuslan Ermilov.Fn run_rc_command
297d962d52aSRuslan Ermilovfunction:
298d962d52aSRuslan Ermilov.Bl -tag -width ".Cm restart" -offset indent
299d962d52aSRuslan Ermilov.It Cm start
30054e347fbSGordon TetlowStart the service.
30154e347fbSGordon TetlowThis should check that the service is to be started as specified by
30254e347fbSGordon Tetlow.Xr rc.conf 5 .
30354e347fbSGordon TetlowAlso checks if the service is already running and refuses to start if
30454e347fbSGordon Tetlowit is.
30554e347fbSGordon TetlowThis latter check is not performed by standard
30654e347fbSGordon Tetlow.Fx
30754e347fbSGordon Tetlowscripts if the system is starting directly to multi-user mode, to
30854e347fbSGordon Tetlowspeed up the boot process.
30954e347fbSGordon TetlowIf
310d962d52aSRuslan Ermilov.Cm forcestart
31154e347fbSGordon Tetlowis given, ignore the
31254e347fbSGordon Tetlow.Xr rc.conf 5
31354e347fbSGordon Tetlowcheck and start anyway.
314d962d52aSRuslan Ermilov.It Cm stop
31554e347fbSGordon TetlowIf the service is to be started as specified by
31654e347fbSGordon Tetlow.Xr rc.conf 5 ,
31754e347fbSGordon Tetlowstop the service.
318d962d52aSRuslan ErmilovThis should check that the service is running and complain if it is not.
31954e347fbSGordon TetlowIf
320d962d52aSRuslan Ermilov.Cm forcestop
32154e347fbSGordon Tetlowis given, ignore the
32254e347fbSGordon Tetlow.Xr rc.conf 5
32354e347fbSGordon Tetlowcheck and attempt to stop.
324d962d52aSRuslan Ermilov.It Cm restart
32554e347fbSGordon TetlowPerform a
326d962d52aSRuslan Ermilov.Cm stop
32754e347fbSGordon Tetlowthen a
328d962d52aSRuslan Ermilov.Cm start .
329d962d52aSRuslan Ermilov.It Cm status
33054e347fbSGordon TetlowIf the script starts a process (rather than performing a one-off
33154e347fbSGordon Tetlowoperation), show the status of the process.
332d962d52aSRuslan ErmilovOtherwise it is not necessary to support this argument.
33354e347fbSGordon TetlowDefaults to displaying the process ID of the program (if running).
334da45b4daSDevin Teske.It Cm enable
335da45b4daSDevin TeskeEnable the service in
336da45b4daSDevin Teske.Xr rc.conf 5 .
337da45b4daSDevin Teske.It Cm disable
338da45b4daSDevin TeskeDisable the service in
339da45b4daSDevin Teske.Xr rc.conf 5 .
340da45b4daSDevin Teske.It Cm delete
341da45b4daSDevin TeskeRemove the service from
342da45b4daSDevin Teske.Xr rc.conf 5 .
343da45b4daSDevin TeskeIf
344da45b4daSDevin Teske.Ql Li service_delete_empty
345da45b4daSDevin Teskeis set to
346da45b4daSDevin Teske.Dq Li YES ,
347da45b4daSDevin Teske.Pa /etc/rc.conf.d/$servicename
348da45b4daSDevin Teskewill be deleted if empty after modification.
3491980d11bSLars Engels.It Cm describe
3501980d11bSLars EngelsPrint a short description of what the script does.
3511980d11bSLars Engels.It Cm extracommands
3521980d11bSLars EngelsPrint the script's non-standard commands.
353d962d52aSRuslan Ermilov.It Cm poll
35454e347fbSGordon TetlowIf the script starts a process (rather than performing a one-off
35554e347fbSGordon Tetlowoperation), wait for the command to exit.
356d962d52aSRuslan ErmilovOtherwise it is not necessary to support this argument.
35749cede74SDag-Erling Smørgrav.It Cm enabled
35849cede74SDag-Erling SmørgravReturn 0 if the service is enabled and 1 if it is not.
35949cede74SDag-Erling SmørgravThis command does not print anything.
360d962d52aSRuslan Ermilov.It Cm rcvar
36154e347fbSGordon TetlowDisplay which
36254e347fbSGordon Tetlow.Xr rc.conf 5
36354e347fbSGordon Tetlowvariables are used to control the startup of the service (if any).
36454e347fbSGordon Tetlow.El
36554e347fbSGordon Tetlow.Pp
36654e347fbSGordon TetlowIf a script must implement additional commands it can list them in
36754e347fbSGordon Tetlowthe
368d962d52aSRuslan Ermilov.Va extra_commands
369d962d52aSRuslan Ermilovvariable, and define their actions in a variable constructed from
37054e347fbSGordon Tetlowthe command name (see the
37154e347fbSGordon Tetlow.Sx EXAMPLES
37254e347fbSGordon Tetlowsection).
37354e347fbSGordon Tetlow.Pp
37454e347fbSGordon TetlowThe following key points apply to old-style scripts in
375d962d52aSRuslan Ermilov.Pa /usr/local/etc/rc.d/ :
376d962d52aSRuslan Ermilov.Bl -bullet
37791e06c00SBen Smithurst.It
37891e06c00SBen SmithurstScripts are only executed if their
37991e06c00SBen Smithurst.Xr basename 1
38091e06c00SBen Smithurstmatches the shell globbing pattern
38191e06c00SBen Smithurst.Pa *.sh ,
38291e06c00SBen Smithurstand they are executable.
38391e06c00SBen SmithurstAny other files or directories present within the directory are silently
38491e06c00SBen Smithurstignored.
38591e06c00SBen Smithurst.It
38691e06c00SBen SmithurstWhen a script is executed at boot time, it is passed the string
387d962d52aSRuslan Ermilov.Dq Li start
38891e06c00SBen Smithurstas its first and only argument.
38991e06c00SBen SmithurstAt shutdown time, it is passed the string
390d962d52aSRuslan Ermilov.Dq Li stop
39191e06c00SBen Smithurstas its first and only argument.
39291e06c00SBen SmithurstAll
393d962d52aSRuslan Ermilov.Nm rc.d/
394d4bbfee2SJens Schweikhardtscripts are expected to handle these arguments appropriately.
39591e06c00SBen SmithurstIf no action needs to be taken at a given time
396d962d52aSRuslan Ermilov(either boot time or shutdown time),
39791e06c00SBen Smithurstthe script should exit successfully and without producing an error message.
39891e06c00SBen Smithurst.It
39991e06c00SBen SmithurstThe scripts within each directory are executed in lexicographical order.
40091e06c00SBen SmithurstIf a specific order is required,
40191e06c00SBen Smithurstnumbers may be used as a prefix to the existing filenames,
40291e06c00SBen Smithurstso for example
40391e06c00SBen Smithurst.Pa 100.foo
40491e06c00SBen Smithurstwould be executed before
40591e06c00SBen Smithurst.Pa 200.bar ;
40691e06c00SBen Smithurstwithout the numeric prefixes the opposite would be true.
40754e347fbSGordon Tetlow.It
40891e06c00SBen SmithurstThe output from each script is traditionally a space character,
40991e06c00SBen Smithurstfollowed by the name of the software package being started or shut down,
41091e06c00SBen Smithurst.Em without
411bb66a3e9SMateusz Piotrowskia trailing newline character.
41254e347fbSGordon Tetlow.El
413d962d52aSRuslan Ermilov.Sh SCRIPTS OF INTEREST
41454e347fbSGordon TetlowWhen an automatic reboot is in progress,
41554e347fbSGordon Tetlow.Nm
41654e347fbSGordon Tetlowis invoked with the argument
417d962d52aSRuslan Ermilov.Cm autoboot .
41854e347fbSGordon TetlowOne of the scripts run from
419d962d52aSRuslan Ermilov.Pa /etc/rc.d/
42054e347fbSGordon Tetlowis
42154e347fbSGordon Tetlow.Pa /etc/rc.d/fsck .
42254e347fbSGordon TetlowThis script runs
42354e347fbSGordon Tetlow.Xr fsck 8
42454e347fbSGordon Tetlowwith option
42554e347fbSGordon Tetlow.Fl p
42654e347fbSGordon Tetlowand
42754e347fbSGordon Tetlow.Fl F
428d962d52aSRuslan Ermilovto
429d962d52aSRuslan Ermilov.Dq preen
430d962d52aSRuslan Ermilovall the disks of minor inconsistencies resulting
431d962d52aSRuslan Ermilovfrom the last system shutdown.
432d962d52aSRuslan ErmilovIf this fails, then checks/repairs of serious inconsistencies
433d962d52aSRuslan Ermilovcaused by hardware or software failure will be performed
434d962d52aSRuslan Ermilovin the background at the end of the booting process.
435d962d52aSRuslan ErmilovIf
436d962d52aSRuslan Ermilov.Cm autoboot
437d962d52aSRuslan Ermilovis not set, when going from single-user to multi-user mode for example,
438d962d52aSRuslan Ermilovthe script does not do anything.
43991e06c00SBen Smithurst.Pp
44054e347fbSGordon TetlowThe
441d962d52aSRuslan Ermilov.Pa /etc/rc.d/local
44254e347fbSGordon Tetlowscript can execute scripts from multiple
443d962d52aSRuslan Ermilov.Nm rc.d/
44491e06c00SBen Smithurstdirectories.
4459a0e6be2SXin LIThe default location includes
4469a0e6be2SXin LI.Pa /usr/local/etc/rc.d/ ,
44791e06c00SBen Smithurstbut these may be overridden with the
44891e06c00SBen Smithurst.Va local_startup
44991e06c00SBen Smithurst.Xr rc.conf 5
45091e06c00SBen Smithurstvariable.
45191e06c00SBen Smithurst.Pp
4528d74f63dSPhilippe CharnierThe
453d962d52aSRuslan Ermilov.Pa /etc/rc.d/serial
4548d74f63dSPhilippe Charnierscript is used to set any special configurations for serial devices.
455afe61c15SRodney W. Grimes.Pp
4568d74f63dSPhilippe CharnierThe
4578d74f63dSPhilippe Charnier.Nm rc.firewall
4588d74f63dSPhilippe Charnierscript is used to configure rules for the kernel based firewall
4591111b49cSSheldon Hearnservice.
4601111b49cSSheldon HearnIt has several possible options:
461e4f980d3SJordan K. Hubbard.Pp
462d962d52aSRuslan Ermilov.Bl -tag -width ".Ar filename" -compact -offset indent
463d962d52aSRuslan Ermilov.It Cm open
464d962d52aSRuslan Ermilovwill allow anyone in
465d962d52aSRuslan Ermilov.It Cm client
466d962d52aSRuslan Ermilovwill try to protect just this machine
467d962d52aSRuslan Ermilov.It Cm simple
468d962d52aSRuslan Ermilovwill try to protect a whole network
469d962d52aSRuslan Ermilov.It Cm closed
470d962d52aSRuslan Ermilovtotally disables IP services except via
471d962d52aSRuslan Ermilov.Pa lo0
472d962d52aSRuslan Ermilovinterface
473d962d52aSRuslan Ermilov.It Cm UNKNOWN
474d962d52aSRuslan Ermilovdisables the loading of firewall rules
475d962d52aSRuslan Ermilov.It Ar filename
476e4f980d3SJordan K. Hubbardwill load the rules in the given filename (full path required).
477e4f980d3SJordan K. Hubbard.El
478e4f980d3SJordan K. Hubbard.Pp
47954e347fbSGordon TetlowMost daemons, including network related daemons, have their own script in
480d962d52aSRuslan Ermilov.Pa /etc/rc.d/ ,
48154e347fbSGordon Tetlowwhich can be used to start, stop, and check the status of the service.
482e4f980d3SJordan K. Hubbard.Pp
48354e347fbSGordon TetlowAny architecture specific scripts, such as
48454e347fbSGordon Tetlow.Pa /etc/rc.d/apm
48554e347fbSGordon Tetlowfor example, specifically check that they are on that architecture
48654e347fbSGordon Tetlowbefore starting the daemon.
487e4f980d3SJordan K. Hubbard.Pp
48854e347fbSGordon TetlowFollowing tradition, all startup files reside in
489afe61c15SRodney W. Grimes.Pa /etc .
4909cbda590SRuslan Ermilov.Sh FILES
491e9074458SGlen Barber.Bl -tag -compact -width Pa
4929cbda590SRuslan Ermilov.It Pa /etc/rc
4939cbda590SRuslan Ermilov.It Pa /etc/rc.conf
4949cbda590SRuslan Ermilov.It Pa /etc/rc.conf.local
4959cbda590SRuslan Ermilov.It Pa /etc/rc.d/
4969cbda590SRuslan Ermilov.It Pa /etc/rc.firewall
4979cbda590SRuslan Ermilov.It Pa /etc/rc.local
4989cbda590SRuslan Ermilov.It Pa /etc/rc.shutdown
4999cbda590SRuslan Ermilov.It Pa /etc/rc.subr
5009cbda590SRuslan Ermilov.It Pa /var/run/dmesg.boot
501a3f9c9fcSRuslan Ermilov.Xr dmesg 8
5029cbda590SRuslan Ermilovresults soon after the
5039cbda590SRuslan Ermilov.Nm
5049cbda590SRuslan Ermilovprocess begins.
505a3f9c9fcSRuslan ErmilovUseful when
506a3f9c9fcSRuslan Ermilov.Xr dmesg 8
507a3f9c9fcSRuslan Ermilovbuffer in the kernel no longer has this information.
5089cbda590SRuslan Ermilov.El
50991e06c00SBen Smithurst.Sh EXAMPLES
51054e347fbSGordon TetlowThe following is a minimal
511d962d52aSRuslan Ermilov.Nm rc.d/
512d962d52aSRuslan Ermilovstyle script.
513d962d52aSRuslan ErmilovMost scripts require little more than the following.
51454e347fbSGordon Tetlow.Bd -literal -offset indent
51554e347fbSGordon Tetlow#!/bin/sh
51654e347fbSGordon Tetlow#
51754e347fbSGordon Tetlow
51854e347fbSGordon Tetlow# PROVIDE: foo
51954e347fbSGordon Tetlow# REQUIRE: bar_service_required_to_precede_foo
52054e347fbSGordon Tetlow
521d962d52aSRuslan Ermilov\&. /etc/rc.subr
52254e347fbSGordon Tetlow
52354e347fbSGordon Tetlowname="foo"
524c86072f5SDoug Bartonrcvar=foo_enable
52554e347fbSGordon Tetlowcommand="/usr/local/bin/foo"
52654e347fbSGordon Tetlow
52754e347fbSGordon Tetlowload_rc_config $name
52854e347fbSGordon Tetlowrun_rc_command "$1"
52954e347fbSGordon Tetlow.Ed
53054e347fbSGordon Tetlow.Pp
531d962d52aSRuslan ErmilovCertain scripts may want to provide enhanced functionality.
532d962d52aSRuslan ErmilovThe user may access this functionality through additional commands.
533d962d52aSRuslan ErmilovThe script may list and define as many commands at it needs.
53454e347fbSGordon Tetlow.Bd -literal -offset indent
53554e347fbSGordon Tetlow#!/bin/sh
53654e347fbSGordon Tetlow#
53754e347fbSGordon Tetlow
53854e347fbSGordon Tetlow# PROVIDE: foo
53954e347fbSGordon Tetlow# REQUIRE: bar_service_required_to_precede_foo
54054e347fbSGordon Tetlow# BEFORE:  baz_service_requiring_foo_to_precede_it
54154e347fbSGordon Tetlow
542d962d52aSRuslan Ermilov\&. /etc/rc.subr
54354e347fbSGordon Tetlow
54454e347fbSGordon Tetlowname="foo"
545c86072f5SDoug Bartonrcvar=foo_enable
54654e347fbSGordon Tetlowcommand="/usr/local/bin/foo"
54754e347fbSGordon Tetlowextra_commands="nop hello"
54854e347fbSGordon Tetlowhello_cmd="echo Hello World."
54954e347fbSGordon Tetlownop_cmd="do_nop"
55054e347fbSGordon Tetlow
55154e347fbSGordon Tetlowdo_nop()
55254e347fbSGordon Tetlow{
55354e347fbSGordon Tetlow	echo "I do nothing."
55454e347fbSGordon Tetlow}
55554e347fbSGordon Tetlow
55654e347fbSGordon Tetlowload_rc_config $name
55754e347fbSGordon Tetlowrun_rc_command "$1"
55854e347fbSGordon Tetlow.Ed
55954e347fbSGordon Tetlow.Pp
56091e06c00SBen SmithurstAs all processes are killed by
56191e06c00SBen Smithurst.Xr init 8
56291e06c00SBen Smithurstat shutdown, the explicit
56391e06c00SBen Smithurst.Xr kill 1
56491e06c00SBen Smithurstis unnecessary, but is often included.
565afe61c15SRodney W. Grimes.Sh SEE ALSO
56691e06c00SBen Smithurst.Xr kill 1 ,
567e4f980d3SJordan K. Hubbard.Xr rc.conf 5 ,
568afe61c15SRodney W. Grimes.Xr init 8 ,
569b25a469fSEugene Grosbein.Xr rc.resume 8 ,
5701c85060aSRuslan Ermilov.Xr rc.subr 8 ,
571121f7af1SBaptiste Daroussin.Xr rcorder 8 ,
572afe61c15SRodney W. Grimes.Xr reboot 8 ,
573e5accd3cSStefan Eßer.Xr savecore 8 ,
574ce6c81b9SAndriy Gapon.Xr service 8 ,
575e5accd3cSStefan Eßer.Xr sysrc 8
576afe61c15SRodney W. Grimes.Sh HISTORY
577afe61c15SRodney W. GrimesThe
578afe61c15SRodney W. Grimes.Nm
5798d74f63dSPhilippe Charnierutility appeared in
580afe61c15SRodney W. Grimes.Bx 4.0 .
581