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 auto-
     matic 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
     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
          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.

     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
                                         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.  Oth-
                    erwise 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.  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.

     The argument may have one of the following prefixes to alter its opera-
     tion:

           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 prerequi-
                  site 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 NetBSD 1.5 by Luke Mewburn <lukem@NetBSD.org>.

NetBSD 5.0_STABLE                April 6, 2007               NetBSD 5.0_STABLE
