summaryrefslogtreecommitdiff
path: root/static/netbsd/man8/rc.8
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man8/rc.8')
-rw-r--r--static/netbsd/man8/rc.8406
1 files changed, 406 insertions, 0 deletions
diff --git a/static/netbsd/man8/rc.8 b/static/netbsd/man8/rc.8
new file mode 100644
index 00000000..bcb3415a
--- /dev/null
+++ b/static/netbsd/man8/rc.8
@@ -0,0 +1,406 @@
+.\" $NetBSD: rc.8,v 1.41 2024/12/31 01:53:59 snj Exp $
+.\"
+.\" Copyright (c) 2000-2017 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.
+.\"
+.\" 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 December 7, 2024
+.Dt RC 8
+.Os
+.Sh NAME
+.Nm rc ,
+.Nm rc.local ,
+.Nm rc.shutdown ,
+.Nm rc.shutdown.final ,
+.Nm rc.d/
+.Nd startup and shutdown scripts
+.Sh SYNOPSIS
+.Nm rc
+.Nm rc.local
+.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.local
+is a command script to which local boot-time actions can be added.
+It is (nearly) the last thing invoked by
+.Nm rc
+during a normal boot.
+.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
+.Xr sh 1
+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,
+or otherwise control the service.
+.Ss Operation of rc
+.Bl -enum
+.It
+Source
+.Pa /etc/rc.subr
+to load various
+.Xr rc.subr 8
+shell functions to use.
+.It
+If autobooting, set
+.Sy autoboot=yes
+and enable a flag
+.Sy ( rc_fast=yes ) ,
+which prevents the
+.Nm rc.d
+scripts from performing the check for already running processes
+(thus speeding up the boot process).
+This
+.Sy rc_fast=yes
+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 Ns 's
+.Fl s
+flag),
+and assigns the result to a variable.
+.It
+Calls each script in turn using
+.Fn run_rc_script
+(from
+.Xr rc.subr 8 ) ,
+which sets
+.Dv $1
+to
+.Sq start ,
+and sources the script in a sub-shell.
+If the script has a
+.Sq .sh
+suffix then it is sourced directly into the current shell.
+.It
+The output from the above steps is sent to a post-processor.
+If
+.Sy rc_silent
+is false, then the post-processor displays the output.
+If
+.Sy rc_silent
+is true, then the post-processor invokes the command specified in
+.Va rc_silent_cmd
+once for each line, without otherwise displaying the output.
+Useful values for
+.Va rc_silent_cmd
+include
+.Dq \&:
+to display nothing at all, and
+.Dq twiddle
+to display a spinning symbol on the console.
+Regardless of the value of
+.Sy rc_silent ,
+the post-processor saves the output in
+.Pa /var/run/rc.log .
+.El
+.Ss Operation of rc.shutdown
+.Bl -enum
+.It
+Source
+.Pa /etc/rc.subr
+to load various
+.Xr rc.subr 8
+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 Ns 's
+.Fl k
+flag),
+reverses that order, and assigns the result to a variable.
+.It
+Calls each script in turn using
+.Fn run_rc_script
+(from
+.Xr rc.subr 8 ) ,
+which sets
+.Dv $1
+to
+.Sq stop ,
+and sources the script in a sub-shell.
+If the script has a
+.Sq .sh
+suffix then it is sourced directly into the current shell.
+.It
+Runs
+.Pa /etc/rc.shutdown.final
+if it exists, passing the currently ongoing shutdown action, which
+will be one of:
+.Bl -bullet
+.It
+shutdown
+when going to single user mode.
+.It
+halt
+when halting the machine (but not powering it down).
+.It
+reboot
+when rebooting the machine.
+.It
+poweroff
+when halting the machine and powering it off.
+.El
+.Pp
+The script may be used to control additional
+actions, e.g. powering off external devices, restarting
+a UPS (in case main power is restored in the interval betweeen
+the computer powering off and the UPS running out of battery).
+.El
+.Ss Contents of rc.d/
+.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 ALLUPPERCASExx -offset indent
+.It Pa ALLUPPERCASE
+Scripts that are
+.Sq placeholders
+to ensure that certain operations are performed before others.
+In order of startup, these are:
+.Bl -tag -width NETWORKINGxx
+.It Pa NETWORKING
+Ensure basic network services are running, including general
+network configuration
+.Pq Pa network
+and
+.Pa dhcpcd .
+.It Pa SERVERS
+Ensure basic services (such as
+.Pa NETWORKING ,
+.Pa ppp ,
+.Pa syslogd ,
+and
+.Pa kdc )
+exist for services that start early (such as
+.Pa named ) ,
+because they're required by
+.Pa DAEMON
+below.
+.It Pa DAEMON
+Before all general purpose daemons such as
+.Pa dhcpd ,
+.Pa lpd ,
+and
+.Pa ntpd .
+.It Pa LOGIN
+Before user login services
+.Pa ( inetd ,
+.Pa telnetd ,
+.Pa rshd ,
+.Pa sshd ,
+and
+.Pa xdm ) ,
+as well as before services which might run commands as users
+.Pa ( cron ,
+.Pa postfix ,
+and
+.Pa sendmail ) .
+.El
+.It Pa inline.sh
+Scripts that are sourced into the current shell rather than a sub-shell
+have a
+.Sq Pa .sh
+suffix.
+Extreme care must be taken in using this, as the startup sequence will
+terminate if the script causes the current shell process to terminate.
+.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 Pa service
+Scripts that are sourced in a sub-shell.
+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
+.Fn stop_boot
+function (from
+.Xr rc.subr 8 ) .
+.El
+.Pp
+Each script should contain
+.Xr rcorder 8
+keywords, especially an appropriate
+.Dq PROVIDE
+entry.
+.Pp
+The scripts are expected to support at least the following arguments:
+.Bl -tag -width restart -offset indent
+.It Sy start
+Start the service.
+This should check that the service is to be started as specified by
+.Xr 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
+.Nx
+scripts if the system is starting directly to multi-user mode, to
+speed up the boot process.
+.It Sy stop
+If the service is to be started as specified by
+.Xr rc.conf 5 ,
+stop the service.
+This should check that the service is running and complain if it's not.
+.It Sy restart
+Perform a
+.Sy stop
+then a
+.Sy start .
+.It Sy 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).
+.It Sy 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.
+.It Sy rcvar
+Display which
+.Xr rc.conf 5
+variables are used to control the startup of the service (if any).
+.El
+.Pp
+Other arguments (such as
+.Sq reload ,
+.Sq dumpdb ,
+etc) can be added if necessary.
+.Pp
+The argument may have one of the following prefixes to alter its operation:
+.Bl -tag -width "force" -offset indent
+.It Sy fast
+Skip the check for an existing running process.
+Sets
+.Sy rc_fast=yes .
+.It Sy force
+Skips the
+.Xr 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
+.Sy rc_force=yes .
+.It Sy one
+Skips the
+.Xr rc.conf 5
+check, but performs all other prerequisite tests.
+.El
+.Pp
+In order to simplify scripts, the
+.Fn run_rc_command
+function from
+.Xr rc.subr 8
+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.local
+Local startup script.
+.It Pa /etc/rc.shutdown
+Shutdown script called by
+.Xr shutdown 8 .
+.It Pa /etc/rc.subr
+Contains
+.Xr rc.subr 8
+functions used by various scripts.
+.It Pa /etc/rc.conf
+System startup configuration file.
+.It Pa /var/run/rc.log
+Log file created by
+.Nm .
+.El
+.Sh SEE ALSO
+.Xr rc.conf 5 ,
+.Xr init 8 ,
+.Xr rc.subr 8 ,
+.Xr rcorder 8 ,
+.Xr reboot 8 ,
+.Xr shutdown 8
+.Rs
+.%A Luke Mewburn
+.%T The Design and Implementation of the NetBSD rc.d system
+.%I USENIX Association
+.%B Proceedings of the FREENIX Track: 2001 USENIX Annual Technical Conference
+.%D June 25-30, 2001
+.%U http://www.usenix.org/publications/library/proceedings/usenix01/freenix01/full_papers/mewburn/mewburn.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Bx 4.0 .
+The
+.Pa /etc/rc.d
+support was implemented in
+.Nx 1.5
+by
+.An Luke Mewburn
+.Aq lukem@NetBSD.org .
+The post-processor, support for
+.Va rc_silent ,
+and saving output to a file, was implemented in
+.Nx 6.0
+by
+.An Alan Barrett .