rc.d(8)
- NetBSD Manual Pages
RC(8) NetBSD System Manager's Manual RC(8)
NAME
rc, rc.shutdown, rc.d/ - startup and shutdown scripts
SYNOPSIS
rc
rc.shutdown
rc.d/
DESCRIPTION
rc is the command script which controls the startup of various services,
and is invoked by init(8) as part of the process of entering the automat-
ic reboot to multi-user startup, or after the single user mode shell has
exited. If init(8) is starting the automatic reboot process, rc is in-
voked with the argument of `autoboot'.
rc.shutdown is the command script which shuts down various services, and
is invoked by shutdown(8) as part of the process of shutting down the
system.
rc.d/ is the directory which contains various sh(1) scripts, one for each
service, which are called by rc at startup, rc.shutdown at shutdown, and
as necessary during system operation to stop, start, restart, reload, or
otherwise control the service.
Operation of rc
1. Source /etc/rc.subr to load various rc.subr(8) shell functions to
use.
2. If autobooting, set autoboot=yes and enable a flag (rc_fast=yes),
which prevents the rc.d scripts from performing the check for al-
ready running processes (thus speeding up the boot process). This
rc_fast=yes speedup won't occur when rc is started up after exiting
the single-user shell.
3. Invoke rcorder(8) to order the files in /etc/rc.d/ that do not have
a ``nostart'' keyword (refer to rcorder(8)'s -s flag), and assigns
the result to a variable.
4. Calls each script in turn using run_rc_script() (from rc.subr(8)),
which sets $1 to `start', and sources the script in a subshell. If
the script has a `.sh' suffix then it is sourced directly into the
current shell.
Operation of rc.shutdown
1. Source /etc/rc.subr to load various rc.subr(8) shell functions to
use.
2. Invoke rcorder(8) to order the files in /etc/rc.d/ that have a
``shutdown'' keyword (refer to rcorder(8)'s -k flag), reverses that
order, and assigns the result to a variable.
3. Calls each script in turn using run_rc_script() (from rc.subr(8)),
which sets $1 to `stop', and sources the script in a subshell. If
the script has a `.sh' suffix then it is sourced directly into the
current shell.
Contents of rc.d/
rc.d/ is located in /etc/rc.d. The following file naming conventions are
currently used in rc.d/:
ALLUPPERCASE Scripts that are `placeholders' to ensure that cer-
tain operations are performed before others. In
order of startup, these are:
NETWORKING Ensure basic network services are
running, including general network
configuration (network) and dhclient.
SERVERS Ensure basic services (such as
NETWORKING, ppp, syslogd, and kdc)
exist for services that start early
(such as named), because they're re-
quired by DAEMON below.
DAEMON Before all general purpose daemons
such as dhcpd, lpd, and ntpd.
LOGIN Before user login services (inetd,
telnetd, rshd, sshd, and xdm), as
well as before services which might
run commands as users (cron, postfix,
and sendmail).
foo.sh Scripts that are to be sourced into the current
shell rather than a subshell have a `.sh' suffix.
Extreme care must be taken in using this, as the
startup sequence will terminate if the script does.
/etc/rc.d/bootconf.sh uses this behaviour to allow
the user to select a different configuration (in-
cluding /etc/rc.conf) early in the boot.
bar Scripts that are sourced in a subshell. These can
stop the boot if necessary with the following shell
commands:
if [ "$autoboot" = yes ]; then
kill -TERM $$
fi
exit 1
Note that this should be used extremely sparingly!
Each script should contain rcorder(8) keywords, especially an appropriate
``PROVIDE'' entry.
The scripts are expected to support at least the following arguments:
start Start the service. This should check that the service is
to be started as specified by rc.conf(5). Also checks if
the service is already running and refuses to start if it
is. This latter check is not performed by standard NetBSD
scripts if the system is starting directly to multi-user
mode, to speed up the boot process. If `forcestart' is
given, ignore the rc.conf(5) check and start anyway.
stop If the service is to be started as specified by
rc.conf(5), stop the service. This should check that the
service is running and complain if it's not. If
`forcestop' is given, ignore the rc.conf(5) check and at-
tempt to stop.
restart Perform a stop then a start.
status If the script starts a process (rather than performing a
one-off operation), show the status of the process. Oth-
erwise it's not necessary to support this argument. De-
faults to displaying the process ID of the program (if
running).
poll If the script starts a process (rather than performing a
one-off operation), wait for the command to exit. Other-
wise it's not necessary to support this argument.
rcvar Display which rc.conf(5) variables are used to control the
startup of the service (if any).
Other arguments (such as `reload', `dumpdb', etc) can be added if neces-
sary.
In order to simplify scripts, the run_rc_command() function from
rc.subr(8) may be used.
FILES
/etc/rc Startup script called by init(8).
/etc/rc.d/ Directory containing control scripts for each service.
/etc/rc.shutdown Shutdown script called by shutdown(8).
/etc/rc.subr Contains rc.subr(8) functions used by various scripts.
/etc/rc.conf System startup configuration file.
SEE ALSO
rc.conf(5), init(8), rc.subr(8), rcorder(8), reboot(8), shutdown(8)
HISTORY
The rc command appeared in 4.0BSD. The /etc/rc.d support was implemented
in NetBSD 1.5 by Luke Mewburn <lukem@netbsd.org>.
NetBSD 1.6 April 18, 2002 3
Powered by man-cgi (2024-03-18).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.