1 .\" Copyright (c) 1980, 1991, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Portions of this manual page are Copyrighted by
5 .\" The NetBSD Foundation.
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\" notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\" notice, this list of conditions and the following disclaimer in the
14 .\" documentation and/or other materials provided with the distribution.
15 .\" 3. All advertising materials mentioning features or use of this software
16 .\" must display the following acknowledgement:
17 .\" This product includes software developed by the University of
18 .\" California, Berkeley and its contributors.
19 .\" 4. Neither the name of the University nor the names of its contributors
20 .\" may be used to endorse or promote products derived from this software
21 .\" without specific prior written permission.
23 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 .\" @(#)rc.8 8.2 (Berkeley) 12/11/93
36 .\" $FreeBSD: src/share/man/man8/rc.8,v 1.22 2002/12/12 17:25:58 ru Exp $
37 .\" $DragonFly: src/share/man/man8/rc.8,v 1.12 2008/05/02 02:05:06 swildner Exp $
38 .Dd September 28, 2009
43 .Nd command scripts for auto-reboot and daemon startup
57 utility is the command script which controls the automatic boot process
64 scripts contains commands which are pertinent only to a specific site.
66 .Pa /usr/local/etc/rc.d/
71 these days but if you want to use them it is still supported.
72 In this case, they should source
74 and contain additional custom startup and shutdown code for your system.
75 The best way to handle
78 .Nm rc.shutdown.local ,
79 however, is to separate them out into
81 style scripts and place them under
82 .Pa /usr/local/etc/rc.d/ .
85 file contains the global system configuration information referenced
86 by the startup scripts, while
88 contains the local system configuration.
95 directories contain scripts which will be automatically
96 executed at boot time and shutdown time.
104 shell functions to use.
107 .Va autoboot Ns = Ns Li yes
109 .Pq Va rc_fast Ns = Ns Li yes ,
112 scripts from performing the check for already running processes
113 (thus speeding up the boot process).
115 .Va rc_fast Ns = Ns Li yes
116 speedup will not occur when
118 is started up after exiting the single-user shell.
122 to order the files in
130 and assign the result to a variable.
132 Call each script in turn using
140 and sources the script in a subshell.
143 suffix then it is sourced directly into the current shell.
145 .Ss Operation of Nm rc.shutdown
152 shell functions to use.
156 to order the files in
164 reverse that order, and assign the result to a variable.
166 Call each script in turn using
174 and sources the script in a subshell.
177 suffix then it is sourced directly into the current shell.
179 .Ss Contents of Nm rc.d/
183 The following file naming conventions are currently used in
185 .Bl -tag -width ".Pa ALLUPPERCASE" -offset indent
189 to ensure that certain operations are performed before others.
190 In order of startup, these are:
191 .Bl -tag -width ".Pa NETWORKING"
193 Ensure basic network services are running, including general
194 network configuration
195 .Pq Pa netif , routing , network_ipv6 , isdnd, ppp-user .
197 Ensure basic services (such as
201 exist for services that start early (such as
203 because they are required by
207 Check-point before all general purpose daemons such as
212 Check-point before user login services
216 as well as services which might run commands as users
222 Scripts that are to be sourced into the current shell rather than a subshell
226 Extreme care must be taken in using this, as the startup sequence will
227 terminate if the script does.
229 Scripts that are sourced in a subshell.
230 These can stop the boot if necessary with the following shell
232 .Bd -literal -offset indent
233 if [ "$autoboot" = yes ]; then
239 Note that this should be used extremely sparingly!
242 Each script should contain
244 keywords, especially an appropriate
246 entry, and if necessary
252 Each script is expected to support at least the following arguments, which
253 are automatically supported if it uses the
256 .Bl -tag -width ".Cm restart" -offset indent
259 This should check that the service is to be started as specified by
261 Also checks if the service is already running and refuses to start if
263 This latter check is not performed by standard
265 scripts if the system is starting directly to multi-user mode, to
266 speed up the boot process.
269 is given, skip the PID check.
274 check and start anyway.
276 If the service is to be started as specified by
279 This should check that the service is running and complain if it is not.
284 check and attempt to stop.
291 If the script starts a process (rather than performing a one-off
292 operation), show the status of the process.
293 Otherwise it is not necessary to support this argument.
294 Defaults to displaying the process ID of the program (if running).
296 If the script starts a process (rather than performing a one-off
297 operation), wait for the command to exit.
298 Otherwise it is not necessary to support this argument.
302 variables are used to control the startup of the service (if any).
305 If a script must implement additional commands it can list them in
308 variable, and define their actions in a variable constructed from
309 the command name (see the
313 The following key points apply to old-style scripts in
314 .Pa /usr/local/etc/rc.d/ :
317 Scripts are only executed if their
319 matches the shell globbing pattern
321 and they are executable.
322 Any other files or directories present within the directory are silently
325 When a script is executed at boot time, it is passed the string
327 as its only argument.
328 At shutdown time, it is passed the string
330 as its only argument.
333 scripts are expected to handle these arguments appropriately.
334 If no action needs to be taken at a given time
335 (either boot time or shutdown time),
336 the script should exit successfully and without producing an error message.
338 The scripts within each directory are executed in lexicographical order.
339 If a specific order is required,
340 numbers may be used as a prefix to the existing filenames,
343 would be executed before
345 without the numeric prefixes the opposite would be true.
347 The output from each script is traditionally a space character,
348 followed by the name of the software package being started or shut down,
350 a trailing newline character (see the
354 .Sh SCRIPTS OF INTEREST
355 When an automatic reboot is in progress,
357 is invoked with the argument
359 One of the scripts run from
371 file systems of minor inconsistencies resulting
372 from the last system shutdown.
373 If preening fails further action depends on the
391 is not set, when going from single-user to multi-user mode for example,
392 the script does not do anything.
395 .Pa /etc/rc.d/localdaemons
396 script can execute scripts from multiple
399 The default locations are
400 .Pa /usr/pkg/etc/rc.d/ ,
401 .Pa /usr/local/etc/rc.d/ ,
402 .Pa /usr/pkg/xorg/etc/rc.d/
404 .Pa /usr/X11R6/etc/rc.d/ ,
405 but these may be overridden with the
412 script is used to set any special configurations for serial devices.
415 .Pa /etc/rc.d/{net*,routing}
416 scripts are used to start the network.
417 The network is started in several passes.
419 .Pa /etc/rc.d/netif ,
420 configures the network
423 .Pa /etc/rc.d/routing
424 script starts routing and sets routing options.
426 .Pa /etc/rc.d/netoptions
427 script sets additional networking options.
429 .Pa /etc/rc.d/network_ipv6
430 script configures IPv6 interfaces and options.
434 script is used to configure rules for the
436 kernel based firewall
438 It has several possible options:
440 .Bl -tag -width ".Ar filename" -compact -offset indent
444 will try to protect just this machine
446 will try to protect a whole network
448 totally disables IP services except via
452 disables the loading of firewall rules
454 will load the rules in the given filename (full path required).
459 scripts are used to configure ATM network interfaces.
460 The interfaces are configured in three passes.
461 The first pass performs the initial interface configuration.
462 The second pass completes the interface configuration and defines PVCs and
463 permanent ATMARP entries.
464 The third pass starts any ATM daemons.
466 Most daemons, including network related daemons, have their own script in
468 which can be used to start, stop, and check the status of the service.
470 Any architecture specific scripts, such as
472 for example, specifically check that they are on that architecture
473 before starting the daemon.
475 Following tradition, all startup files reside in
481 .It Pa /etc/rc.conf.local
483 .It Pa /etc/rc.firewall
485 .It Pa /etc/rc.shutdown
486 .It Pa /etc/rc.shutdown.local
490 The following is a minimal
493 Most scripts require little more than the following.
494 .Bd -literal -offset indent
499 # REQUIRE: bar_service_required_to_precede_foo
500 # BEFORE: baz_service_requiring_foo_to_precede_it
506 command="/usr/local/bin/foo"
512 Certain scripts may want to provide enhanced functionality.
513 The user may access this functionality through additional commands.
514 The script may list and define as many commands at it needs.
515 .Bd -literal -offset indent
520 # REQUIRE: bar_service_required_to_precede_foo
521 # BEFORE: baz_service_requiring_foo_to_precede_it
527 command="/usr/local/bin/foo"
528 extra_commands="nop hello"
529 hello_cmd="echo Hello World."
541 The following is a simple, hypothetical example of an old-style
542 .Pa /usr/local/etc/rc.d/
544 which would start a daemon at boot time,
545 and kill it at shutdown time.
546 .Bd -literal -offset indent
549 # initialization/shutdown script for foobar package
553 /usr/local/sbin/foo -d && echo -n ' foo'
556 kill `cat /var/run/foo.pid` && echo -n ' foo'
559 echo "unknown option: $1 - should be 'start' or 'stop'" >&2
564 As all processes are killed by
566 at shutdown, the explicit
568 is unnecessary, but is often included.
586 facility was implemented in