fa2f94238c
- use bootconf.sh instead of fsck.sh as the `foo.sh' example - add information how a normal script can stop the boot with kill -TERM $$ - update history
255 lines
6.7 KiB
Groff
255 lines
6.7 KiB
Groff
.\" $NetBSD: rc.8,v 1.12 2000/08/22 08:53:17 lukem Exp $
|
|
.\"
|
|
.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by Luke Mewburn.
|
|
.\"
|
|
.\" 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 NetBSD
|
|
.\" Foundation, Inc. and its contributors.
|
|
.\" 4. Neither the name of The NetBSD Foundation 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
|
.\"
|
|
.Dd August 16, 2000
|
|
.Dt RC 8
|
|
.Os
|
|
.Sh NAME
|
|
.Nm rc ,
|
|
.Nm rc.shutdown ,
|
|
.Nm rc.d/
|
|
.Nd startup and shutdown scripts
|
|
.Sh SYNOPSIS
|
|
.Nm rc
|
|
.Nm rc.shutdown
|
|
.Nm rc.d/
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
is the command script which controls the startup of various services,
|
|
and is invoked by
|
|
.Xr 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
|
|
.Xr init 8
|
|
is starting the automatic reboot process,
|
|
.Nm
|
|
is invoked with the argument of
|
|
.Sq autoboot .
|
|
.Pp
|
|
.Nm rc.shutdown
|
|
is the command script which shuts down various services, and is invoked by
|
|
.Xr shutdown 8
|
|
as part of the process of shutting down the system.
|
|
.Pp
|
|
.Nm rc.d/
|
|
is the directory which contains various scripts, one for each service,
|
|
which are called by
|
|
.Nm
|
|
at startup,
|
|
.Nm rc.shutdown
|
|
at shutdown,
|
|
and as necessary during system operation to stop, start, restart, reload,
|
|
(etc) the service.
|
|
.Ss Operation of rc
|
|
.Bl -enum
|
|
.It
|
|
Source
|
|
.Pa /etc/rc.subr
|
|
to load various shell functions to use.
|
|
.It
|
|
If autobooting, set
|
|
.Dv $autoboot
|
|
to
|
|
.Sq yes ,
|
|
and enable a flag which prevents the
|
|
.Nm rc.d
|
|
scripts from performing the check for already running processes
|
|
(thus speeding up the boot process).
|
|
This speedup won't occur when
|
|
.Nm
|
|
is started up after exiting the single-user shell.
|
|
.It
|
|
Invoke
|
|
.Xr rcorder 8
|
|
to order the files in
|
|
.Pa /etc/rc.d/
|
|
that do not have a
|
|
.Dq nostart
|
|
keyword (refer to
|
|
.Xr rcorder 8 's
|
|
.Fl s
|
|
flag),
|
|
and assigns the result to a variable.
|
|
.It
|
|
Calls each script in turn using run_rc_script() (from
|
|
.Pa /etc/rc.subr ) ,
|
|
which sets
|
|
.Dv $1
|
|
to
|
|
.Sq start ,
|
|
and sources the script in a subshell.
|
|
If the script has a
|
|
.Sq .sh
|
|
suffix then it is sourced directly into the current shell.
|
|
.El
|
|
.Ss Operation of rc.shutdown
|
|
.Bl -enum
|
|
.It
|
|
Source
|
|
.Pa /etc/rc.subr
|
|
to load various shell functions to use.
|
|
.It
|
|
Invoke
|
|
.Xr rcorder 8
|
|
to order the files in
|
|
.Pa /etc/rc.d/
|
|
that have a
|
|
.Dq shutdown
|
|
keyword (refer to
|
|
.Xr rcorder 8 's
|
|
.Fl k
|
|
flag),
|
|
reverses that order, and assigns the result to a variable.
|
|
.It
|
|
Calls each script in turn using run_rc_script() (from
|
|
.Pa /etc/rc.subr ) ,
|
|
which sets
|
|
.Dv $1
|
|
to
|
|
.Sq stop ,
|
|
and sources the script in a subshell.
|
|
If the script has a
|
|
.Sq .sh
|
|
suffix then it is sourced directly into the current shell.
|
|
.El
|
|
.Ss Contents of rc.d/
|
|
.Pp
|
|
.Nm rc.d/
|
|
is located in
|
|
.Pa /etc/rc.d .
|
|
The following file naming conventions are currently used in
|
|
.Nm rc.d/ :
|
|
.Bl -tag -width ALLUPPERCASE -offset indent
|
|
.It ALLUPPERCASE
|
|
Scripts that are
|
|
.Sq placeholders
|
|
to ensure that certain operations are done before others, such as:
|
|
.Bl -tag -width SERVERS
|
|
.It DAEMON
|
|
before all general purpose daemons
|
|
.It LOGIN
|
|
before user login processes
|
|
.It NETWORK
|
|
ensure basic network services are running
|
|
.It SERVERS
|
|
ensure basic services exist for services that start early.
|
|
.El
|
|
.It foo.sh
|
|
Scripts that are to be sourced into the current shell rather than a subshell.
|
|
Extreme care must be taken in using this, as the startup sequence will
|
|
terminate if the script does.
|
|
.Pa /etc/rc.d/bootconf.sh
|
|
uses this behaviour to allow the user to select a different
|
|
configuration (including
|
|
.Pa /etc/rc.conf )
|
|
early in the boot.
|
|
.It bar
|
|
Scripts that are sourced in a subshell.
|
|
These can stop the boot if necessary with the following shell
|
|
commands:
|
|
.Bd -literal -offset
|
|
if [ "$autoboot" = yes ]; then
|
|
kill -TERM $$
|
|
fi
|
|
exit 1
|
|
.Ed
|
|
.Pp
|
|
Note that this should be used sparingly!
|
|
.El
|
|
.Pp
|
|
The scripts are expected to support at least the following arguments:
|
|
.Bl -tag -width restart -offset indent
|
|
.It start
|
|
Start the program.
|
|
This should check that the program is to be started as specified by
|
|
.Xr rc.conf 5 .
|
|
If
|
|
.Sq forcestart
|
|
is given, ignore the rc.conf check and start anyway.
|
|
.It stop
|
|
If the program is to be started as specified by
|
|
.Xr rc.conf 5 ,
|
|
stop the program.
|
|
This should check that the program is running and complain if it's not.
|
|
If
|
|
.Sq forcestop
|
|
is given, ignore the rc.conf check and attempt to stop.
|
|
.It restart
|
|
Effectively perform a stop then a start.
|
|
.It status
|
|
Show the status of the program.
|
|
Defaults to displaying the process ID of the process (if running).
|
|
.El
|
|
.Pp
|
|
Other arguments (such as
|
|
.Sq reload ,
|
|
.Sq dumpdb ,
|
|
etc) can be added if necessary.
|
|
.Pp
|
|
In order to simplify scripts, the run_rc_command() function from
|
|
.Pa /etc/rc.subr
|
|
may be used.
|
|
.Sh FILES
|
|
.Bl -tag -width /etc/rc.shutdown -compact
|
|
.It Pa /etc/rc
|
|
Startup script called by
|
|
.Xr init 8 .
|
|
.It Pa /etc/rc.d/
|
|
Directory containing control scripts for each service.
|
|
.It Pa /etc/rc.shutdown
|
|
Shutdown script called by
|
|
.Xr shutdown 8 .
|
|
.It Pa /etc/rc.subr
|
|
Contains functions used by various scripts.
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr rc.conf 5 ,
|
|
.Xr init 8 ,
|
|
.Xr rcorder 8 ,
|
|
.Xr reboot 8 ,
|
|
.Xr shutdown 8
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command appeared in
|
|
.Bx 4.0 .
|
|
The
|
|
.Pa /etc/rc.d
|
|
support was implemented in
|
|
.Nx 1.5
|
|
by Luke Mewburn <lukem@netbsd.org>.
|