1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-21 11:13:30 +00:00
freebsd/share/man/man8/rc.8

265 lines
7.6 KiB
Groff

.\" Copyright (c) 1980, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" @(#)rc.8 8.2 (Berkeley) 12/11/93
.\" $FreeBSD$
.\"
.Dd December 11, 1993
.Dt RC 8
.Os BSD 4
.Sh NAME
.Nm rc
.Nd command scripts for auto\-reboot and daemon startup
.Sh SYNOPSIS
.Nm
.Nm rc.conf
.Nm rc.conf.local
.Nm rc.d
.Nm rc.serial
.Nm rc.pccard
.Nm rc.network
.Nm rc.firewall
.Nm rc.atm
.Nm rc.<arch>
.Nm rc.local
.Nm rc.shutdown
.Sh DESCRIPTION
.Nm Rc
is the command script which controls the automatic reboot
(calling the other scripts) and
.Nm rc.local
is the script holding 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 do want to use rc.local, /etc/rc still supports it.
In this case, rc.local should source /etc/rc.conf and
contain additional custom startup code for your system.
.Nm Rc.conf
contains the global system configuration information referenced
by the rc files, while
.Nm rc.conf.local
contains the local system configuration. See rc.conf(5)
.Pp
The
.Nm rc.d
directories contain scripts which will be automatically
executed at boot time and shutdown time.
At boot time,
the specified directories are processed immediately after
.Nm rc.local
is executed.
(See below for details on how to specify directories to check.)
At shutdown time,
the directories are processed by
.Nm rc.shutdown .
The following key points apply to the scripts within each directory:
.Pp
.Bl -bullet -compact
.It
Scripts are only executed if their
.Xr basename 1
matches the shell globbing pattern
.Pa *.sh ,
and they are executable.
Any other files or directories present within the directory are silently
ignored.
.It
When a script is executed at boot time, it is passed the string
.Dq start
as its first and only argument.
At shutdown time, it is passed the string
.Dq stop
as its first and only argument.
All
.Nm rc.d
scripts expected to handle these arguments appropriately.
If no action needs to be taken at a given time
(either boot time or shutdown time)
the script should exit successfully and without producing an error message.
.It
The scripts within each directory are executed in lexicographical order.
If a specific order is required,
numbers may be used as a prefix to the existing filenames,
so for example
.Pa 100.foo
would be executed before
.Pa 200.bar ;
without the numeric prefixes the opposite would be true.
.El
.Pp
The output from each script is traditionally a space character,
followed by the name of the software package being started or shut down,
.Em without
a trailing newline character (see the
.Sx EXAMPLES
section).
.Pp
The system initialization scripts can execute scripts from multiple
.Nm rc.d
directories.
The default locations are
.Pa /usr/local/etc/rc.d
and
.Pa /usr/X11R6/etc/rc.d ,
but these may be overridden with the
.Va local_startup
.Xr rc.conf 5
variable.
.Pp
.Nm Rc.shutdown
is the command script which contains any necessary commands
to be executed as the system is shut down.
.Pp
When an automatic reboot is in progress,
.Nm
is invoked with the argument
.Em autoboot .
The first portion of
.Nm
runs an
.Xr fsck 8
with option
.Fl p
to ``preen'' all the disks of minor inconsistencies resulting
from the last system shutdown and to check for serious inconsistencies
caused by hardware or software failure.
If this auto-check and repair succeeds, then the second part of
.Nm
is run.
.Pp
The second part of
.Nm ,
which is run after an auto-reboot succeeds and also if
.Nm
is invoked when a single user shell terminates (see
.Xr init 8 ) ,
starts all the daemons on the system, preserves editor files
and clears the scratch directory
.Pa /tmp .
.Pp
.Nm Rc.serial
is used to set any special configurations for serial devices.
.Pp
.Nm Rc.pccard
is used to enable PC-cards.
.Pp
.Nm Rc.network
is used to start the network.
The network is started in three passes.
The first pass sets the hostname and domainname, configures the network
interfaces, turns on any IP firewall rules, and starts routing.
The second pass starts most of the network related daemons.
The third pass starts NFS, amd, rwhod, Kerberos and
the multicast routing daemon.
.Pp
.Nm Rc.firewall
is used to configure rules for the kernel based firewall
service.
It has several possible options:
.Pp
.Bl -tag -width "fBfilename" -compact -offset indent
.It open
will allow anyone in.
.It client
will try to protect just this machine.
.It simple
will try to protect a whole network.
.It closed
totally disables IP services except via lo0 interface.
.It UNKNOWN
disables the loading of firewall rules.
.It filename
will load the rules in the given filename (full path required).
.El
.Pp
.Nm Rc.atm
is used to configure ATM network interfaces.
The interfaces are configured in three passes.
The first pass performs the initial interface configuration.
The second pass completes the interface configuration and defines PVCs and
permanent ATMARP entries.
The third pass starts any ATM daemons.
.Pp
.Nm Rc.<arch>
runs architecture specific programs.
.Pp
.Nm Rc.local
is executed after the scripts above, but before the rest of the
.Nm
file is completed.
In a default installation
.Nm rc.local
does not exist, but its contents will be executed if the file is created
by the administrator.
.Pp
Following tradition, the startup files reside in
.Pa /etc .
.Sh EXAMPLES
The following is a simple, hypothetical example of an
.Nm rc.d
script,
which would start a daemon at boot time,
and kill it at shutdown time.
.Bd -literal -offset indent
#!/bin/sh -
#
# initialization/shutdown script for foobar package
case "$1" in
start)
/usr/local/sbin/foo -d && echo -n ' foo'
;;
stop)
kill `cat /var/run/foo.pid` && echo -n ' foo'
;;
*)
echo "unknown option: $1 - should be 'start' or 'stop'" >&2
;;
esac
.Ed
.Pp
As all processes are killed by
.Xr init 8
at shutdown, the explicit
.Xr kill 1
is unnecessary, but is often included.
.Sh SEE ALSO
.Xr kill 1 ,
.Xr rc.conf 5 ,
.Xr init 8 ,
.Xr reboot 8 ,
.Xr savecore 8
.Sh HISTORY
The
.Nm
command appeared in
.Bx 4.0 .