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 automatic 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 invoked 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
-
Source
/etc/rc.subr
to load various
rc.subr(8)
shell functions to use.
-
If autobooting, set
autoboot=yes
and enable a flag
(rc_fast=yes),
which prevents the
rc.d
scripts from performing the check for already 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.
-
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.
-
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
-
Source
/etc/rc.subr
to load various
rc.subr(8)
shell functions to use.
-
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.
-
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 certain 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 required 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 (including
/etc/rc.conf
)
early in the boot.
bar
-
Scripts that are sourced in a subshell.
The boot does not stop if such a script terminates with a non-zero status,
but a script can stop the boot if necessary by invoking the
stop_boot(
)
function (from
rc.subr(8)).
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.
- 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.
- 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.
Otherwise it's not necessary to support this argument.
Defaults 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.
Otherwise 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 necessary.
The argument may have one of the following prefixes to alter its operation:
- fast
-
Skip the check for an existing running process.
Sets
rc_fast=yes.
- force
-
Skips the
rc.conf(5)
check, ignores a failure result from any of the prerequisite checks,
executes the command, and always returns a zero exit status.
Sets
rc_force=yes.
- one
-
Skips the
rc.conf(5)
check, but performs all other prerequisite tests.
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
NetBSD1.5
by
Luke Mewburn
<lukem@NetBSD.org>.