summaryrefslogtreecommitdiff
path: root/static/netbsd/man8/rc.subr.8 4.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man8/rc.subr.8 4.html')
-rw-r--r--static/netbsd/man8/rc.subr.8 4.html575
1 files changed, 0 insertions, 575 deletions
diff --git a/static/netbsd/man8/rc.subr.8 4.html b/static/netbsd/man8/rc.subr.8 4.html
deleted file mode 100644
index 93855b5f..00000000
--- a/static/netbsd/man8/rc.subr.8 4.html
+++ /dev/null
@@ -1,575 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">RC.SUBR(8)</td>
- <td class="head-vol">System Manager's Manual</td>
- <td class="head-rtitle">RC.SUBR(8)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">rc.subr</code> &#x2014;
- <span class="Nd">functions used by system shell scripts</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<ul class="Bl-item">
- <li>. <code class="Li">/etc/rc.subr</code></li>
- <li id="backup_file"><a class="permalink" href="#backup_file"><code class="Ic">backup_file</code></a>
- <var class="Ar">action</var> <var class="Ar">file</var>
- <var class="Ar">current</var> <var class="Ar">backup</var></li>
- <li id="basename"><a class="permalink" href="#basename"><code class="Ic">basename</code></a>
- <var class="Ar">file</var> [<var class="Ar">suffix</var>]</li>
- <li id="checkyesno"><a class="permalink" href="#checkyesno"><code class="Ic">checkyesno</code></a>
- <var class="Ar">var</var></li>
- <li id="check_pidfile"><a class="permalink" href="#check_pidfile"><code class="Ic">check_pidfile</code></a>
- <var class="Ar">pidfile</var> <var class="Ar">procname</var>
- [<var class="Ar">interpreter</var>]</li>
- <li id="check_process"><a class="permalink" href="#check_process"><code class="Ic">check_process</code></a>
- <var class="Ar">procname</var> [<var class="Ar">interpreter</var>]</li>
- <li id="collapse_backslash_newline"><a class="permalink" href="#collapse_backslash_newline"><code class="Ic">collapse_backslash_newline</code></a></li>
- <li id="dirname"><a class="permalink" href="#dirname"><code class="Ic">dirname</code></a>
- <var class="Ar">file</var></li>
- <li id="err"><a class="permalink" href="#err"><code class="Ic">err</code></a>
- <var class="Ar">exitval</var> <var class="Ar">message</var></li>
- <li id="load_rc_config"><a class="permalink" href="#load_rc_config"><code class="Ic">load_rc_config</code></a>
- <var class="Ar">command</var></li>
- <li id="load_rc_config_var"><a class="permalink" href="#load_rc_config_var"><code class="Ic">load_rc_config_var</code></a>
- <var class="Ar">command</var> <var class="Ar">var</var></li>
- <li id="mount_critical_filesystems"><a class="permalink" href="#mount_critical_filesystems"><code class="Ic">mount_critical_filesystems</code></a>
- <var class="Ar">type</var></li>
- <li id="no_rc_postprocess"><a class="permalink" href="#no_rc_postprocess"><code class="Ic">no_rc_postprocess</code></a>
- <var class="Ar">command</var> [<var class="Ar">arguments</var>]</li>
- <li id="print_rc_metadata"><a class="permalink" href="#print_rc_metadata"><code class="Ic">print_rc_metadata</code></a>
- <var class="Ar">string</var></li>
- <li id="print_rc_normal"><a class="permalink" href="#print_rc_normal"><code class="Ic">print_rc_normal</code></a>
- [<code class="Fl">-n</code>] <var class="Ar">string</var></li>
- <li id="rc_usage"><a class="permalink" href="#rc_usage"><code class="Ic">rc_usage</code></a>
- <var class="Ar">command</var> [<var class="Ar">...</var>]</li>
- <li id="reverse_list"><a class="permalink" href="#reverse_list"><code class="Ic">reverse_list</code></a>
- <var class="Ar">item</var> [<var class="Ar">...</var>]</li>
- <li id="run_rc_command"><a class="permalink" href="#run_rc_command"><code class="Ic">run_rc_command</code></a>
- <var class="Ar">argument [parameters]</var></li>
- <li id="run_rc_script"><a class="permalink" href="#run_rc_script"><code class="Ic">run_rc_script</code></a>
- <var class="Ar">file</var> <var class="Ar">argument</var></li>
- <li id="stop_boot"><a class="permalink" href="#stop_boot"><code class="Ic">stop_boot</code></a></li>
- <li id="twiddle"><a class="permalink" href="#twiddle"><code class="Ic">twiddle</code></a></li>
- <li id="wait_for_pids"><a class="permalink" href="#wait_for_pids"><code class="Ic">wait_for_pids</code></a>
- [<var class="Ar">pid</var> [<var class="Ar">...</var>]]</li>
- <li id="warn"><a class="permalink" href="#warn"><code class="Ic">warn</code></a>
- <var class="Ar">message</var></li>
- <li id="yesno_to_truefalse"><a class="permalink" href="#yesno_to_truefalse"><code class="Ic">yesno_to_truefalse</code></a>
- <var class="Ar">var</var></li>
-</ul>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><code class="Nm">rc.subr</code> contains commonly used shell
- script functions which are used by various scripts such as
- <a class="Xr">rc(8)</a>, and the periodic system services which are
- controlled by <a class="Xr">daily.conf(5)</a>,
- <a class="Xr">monthly.conf(5)</a>, <a class="Xr">security.conf(5)</a>, and
- <a class="Xr">weekly.conf(5)</a>.</p>
-<p class="Pp">The <code class="Nm">rc.subr</code> functions are accessed by
- sourcing <span class="Pa">/etc/rc.subr</span> into the current shell.</p>
-<p class="Pp">The following shell functions are available:</p>
-<dl class="Bl-tag">
- <dt id="backup_file~2"><a class="permalink" href="#backup_file~2"><code class="Ic">backup_file</code></a>
- <var class="Ar">action</var> <var class="Ar">file</var>
- <var class="Ar">current</var> <var class="Ar">backup</var></dt>
- <dd>Make a backup copy of <var class="Ar">file</var> into
- <var class="Ar">current</var>. If the <a class="Xr">rc.conf(5)</a>
- variable
- <a class="permalink" href="#backup_uses_rcs"><b class="Sy" id="backup_uses_rcs">backup_uses_rcs</b></a>
- is &#x2018;YES&#x2019;, use <a class="Xr">rcs(1)</a> to archive the
- previous version of <var class="Ar">current</var>, otherwise save the
- previous version of <var class="Ar">current</var> as
- <var class="Ar">backup</var>.
- <p class="Pp"><var class="Ar">action</var> may be one of the following:</p>
- <dl class="Bl-tag">
- <dt id="add"><a class="permalink" href="#add"><b class="Sy">add</b></a></dt>
- <dd><var class="Ar">file</var> is now being backed up by or possibly
- re-entered into this backup mechanism. <var class="Ar">current</var>
- is created, and if necessary, the <a class="Xr">rcs(1)</a> files are
- created as well.</dd>
- <dt id="update"><a class="permalink" href="#update"><b class="Sy">update</b></a></dt>
- <dd><var class="Ar">file</var> has changed and needs to be backed up. If
- <var class="Ar">current</var> exists, it is copied to
- <var class="Ar">backup</var> or checked into <a class="Xr">rcs(1)</a>
- (if the repository file is old), and then <var class="Ar">file</var>
- is copied to <var class="Ar">current</var>.</dd>
- <dt id="remove"><a class="permalink" href="#remove"><b class="Sy">remove</b></a></dt>
- <dd><var class="Ar">file</var> is no longer being tracked by this backup
- mechanism. If <a class="Xr">rcs(1)</a> is being used, an empty file is
- checked in and <var class="Ar">current</var> is removed, otherwise
- <var class="Ar">current</var> is moved to
- <var class="Ar">backup</var>.</dd>
- </dl>
- </dd>
- <dt id="basename~2"><a class="permalink" href="#basename~2"><code class="Ic">basename</code></a>
- <var class="Ar">file</var> [<var class="Ar">suffix</var>]</dt>
- <dd>Just like <a class="Xr">basename(1)</a>, except implemented using shell
- built-in commands, and usable before the <span class="Pa">/usr/bin</span>
- direcory is available.</dd>
- <dt id="checkyesno~2"><a class="permalink" href="#checkyesno~2"><code class="Ic">checkyesno</code></a>
- <var class="Ar">var</var></dt>
- <dd>Return 0 if <var class="Ar">var</var> is defined to &#x2018;YES&#x2019;,
- &#x2018;TRUE&#x2019;, &#x2018;ON&#x2019;, or &#x2018;1&#x2019;. Return 1
- if <var class="Ar">var</var> is defined to &#x2018;NO&#x2019;,
- &#x2018;FALSE&#x2019;, &#x2018;OFF&#x2019;, or &#x2018;0&#x2019;.
- Otherwise, warn that <var class="Ar">var</var> is not set correctly. The
- values are case insensitive.
- <p class="Pp">Note that the warning message shown by this function when
- <var class="Ar">var</var> is not set references a manual page where the
- user can find more information. Its name is picked up from the
- <b class="Sy">rcvar_manpage</b> variable.</p>
- </dd>
- <dt id="check_pidfile~2"><a class="permalink" href="#check_pidfile~2"><code class="Ic">check_pidfile</code></a>
- <var class="Ar">pidfile</var> <var class="Ar">procname</var>
- [<var class="Ar">interpreter</var>]</dt>
- <dd>Parses the first word of the first line of <var class="Ar">pidfile</var>
- for a PID, and ensures that the process with that PID is running and its
- first argument matches <var class="Ar">procname</var>. Prints the matching
- PID if successful, otherwise nothing. If <var class="Ar">interpreter</var>
- is provided, parse the first line of <var class="Ar">procname</var>,
- ensure that the line is of the form
- <div class="Bd Bd-indent"><code class="Li">#! interpreter [...]</code></div>
- and use <var class="Ar">interpreter</var> with its optional arguments and
- <var class="Ar">procname</var> appended as the process string to search
- for.</dd>
- <dt id="check_process~2"><a class="permalink" href="#check_process~2"><code class="Ic">check_process</code></a>
- <var class="Ar">procname</var> [<var class="Ar">interpreter</var>]</dt>
- <dd>Prints the PIDs of any processes that are running with a first argument
- that matches <var class="Ar">procname</var>.
- <var class="Ar">interpreter</var> is handled as per
- <code class="Ic">check_pidfile</code>.</dd>
- <dt id="collapse_backslash_newline~2"><a class="permalink" href="#collapse_backslash_newline~2"><code class="Ic">collapse_backslash_newline</code></a></dt>
- <dd>Copy input to output, collapsing
- &#x27E8;backslash&#x27E9;&#x27E8;newline&#x27E9; to nothing, but leaving
- other backslashes alone. <code class="Ic">dirname</code>
- <var class="Ar">file</var> Just like <a class="Xr">dirname(1)</a>, except
- implemented using shell built-in commands, and usable before the
- <span class="Pa">/usr/bin</span> direcory is available.</dd>
- <dt id="err~2"><a class="permalink" href="#err~2"><code class="Ic">err</code></a>
- <var class="Ar">exitval</var> <var class="Ar">message</var></dt>
- <dd>Display an error message to <i class="Em">stderr</i>, log it to the system
- log using <a class="Xr">logger(1)</a>, and <code class="Cm">exit</code>
- with an exit value of <var class="Ar">exitval</var>. The error message
- consists of the script name (from <b class="Sy">$0</b>), followed by
- &#x201C;: ERROR: &#x201D;, and then <var class="Ar">message</var>.</dd>
- <dt id="load_rc_config~2"><a class="permalink" href="#load_rc_config~2"><code class="Ic">load_rc_config</code></a>
- <var class="Ar">command</var></dt>
- <dd>Source in the <a class="Xr">rc.conf(5)</a> configuration files for
- <var class="Ar">command</var>. First, <span class="Pa">/etc/rc.conf</span>
- is sourced if it has not yet been read in. Then,
- <span class="Pa">/etc/rc.conf.d/</span><var class="Ar">command</var> is
- sourced if it is an existing file. The latter may also contain other
- variable assignments to override <code class="Ic">run_rc_command</code>
- arguments defined by the calling script, to provide an easy mechanism for
- an administrator to override the behaviour of a given
- <a class="Xr">rc.d(8)</a> script without requiring the editing of that
- script.</dd>
- <dt id="load_rc_config_var~2"><a class="permalink" href="#load_rc_config_var~2"><code class="Ic">load_rc_config_var</code></a>
- <var class="Ar">command</var> <var class="Ar">var</var></dt>
- <dd>Read the <a class="Xr">rc.conf(5)</a> variable <var class="Ar">var</var>
- for <var class="Ar">command</var> and set in the current shell, using
- <code class="Ic">load_rc_config</code> in a sub-shell to prevent unwanted
- side effects from other variable assignments.</dd>
- <dt id="mount_critical_filesystems~2"><a class="permalink" href="#mount_critical_filesystems~2"><code class="Ic">mount_critical_filesystems</code></a>
- <var class="Ar">type</var></dt>
- <dd>Go through a list of critical file systems, as found in the
- <a class="Xr">rc.conf(5)</a> variable
- <a class="permalink" href="#critical_filesystems_"><b class="Sy" id="critical_filesystems_">critical_filesystems_</b></a><var class="Ar">type</var>,
- mounting each one that is not currently mounted.</dd>
- <dt id="no_rc_postprocess~2"><a class="permalink" href="#no_rc_postprocess~2"><code class="Ic">no_rc_postprocess</code></a>
- <var class="Ar">command</var> [<var class="Ar">arguments</var>]</dt>
- <dd>Execute the specified command with the specified arguments, in such a way
- that its output bypasses the post-processor that <a class="Xr">rc(8)</a>
- uses for most commands. This implies that the output will not appear in
- the <span class="Pa">/var/run/rc.log</span> file, and will appear on the
- console regardless of the value of <var class="Va">rc_silent</var>. This
- is expected to be useful for interactive commands, and this mechanism is
- automatically used by <code class="Ic">run_rc_command</code> when a script
- contains the <a class="Xr">rcorder(8)</a> keyword
- &#x201C;interactive&#x201D;.
- <p class="Pp">If invoked from a context that does not appear to be under the
- control of <a class="Xr">rc(8)</a>, then the command is executed without
- special treatment.</p>
- </dd>
- <dt id="print_rc_metadata~2"><a class="permalink" href="#print_rc_metadata~2"><code class="Ic">print_rc_metadata</code></a>
- <var class="Ar">string</var></dt>
- <dd>Print the specified <var class="Ar">string</var> in such a way that it
- should be handled as meta-data by the <a class="Xr">rc(8)</a>
- post-processor. If invoked from a context that does not appear to be under
- the control of <a class="Xr">rc(8)</a>, then the
- <var class="Ar">string</var> is discarded.
- <p class="Pp">Any <a class="Xr">rc.d(8)</a> script may invoke this function
- with an argument that begins with &#x201C;note:&#x201D;, followed by one
- line of arbitrary text; the text will be logged by
- <a class="Xr">rc(8)</a> but will not be displayed on the console.</p>
- <p class="Pp">The use of arguments that do not begin with
- &#x201C;note:&#x201D; is reserved for internal use by
- <a class="Xr">rc(8)</a> and <code class="Nm">rc.subr</code>.</p>
- </dd>
- <dt id="print_rc_normal~2"><a class="permalink" href="#print_rc_normal~2"><code class="Ic">print_rc_normal</code></a>
- [<code class="Fl">-n</code>] <var class="Ar">string</var></dt>
- <dd>Print the specified <var class="Ar">string</var> in such a way that it
- should be handled as normal output by the <a class="Xr">rc(8)</a>
- post-processor. If invoked from a context that does not appear to be under
- the control of <a class="Xr">rc(8)</a>, then the
- <var class="Ar">string</var> is printed to standard output.
- <p class="Pp">If the <code class="Fl">-n</code> flag is specified, then the
- string is printed without a newline.</p>
- <p class="Pp">Intended use cases include:</p>
- <ul class="Bl-bullet">
- <li>An rc.d script can use &#x201C;<b class="Sy">print_rc_normal</b>
- <code class="Fl">-n</code>&#x201D; to print a partial line in such a
- way that it appears immediately instead of being buffered by
- <a class="Xr">rc(8)</a>'s post-processor.</li>
- <li>An rc.d script that is run via the <b class="Sy">no_rc_postprocess</b>
- function (so most of its output is invisible to
- <a class="Xr">rc(8)</a>'s post-processor) can use
- <b class="Sy">print_rc_normal</b> to force some of its output to be
- seen by the post-processor.</li>
- </ul>
- </dd>
- <dt id="rc_usage~2"><a class="permalink" href="#rc_usage~2"><code class="Ic">rc_usage</code></a>
- <var class="Ar">command</var> [<var class="Ar">...</var>]</dt>
- <dd>Print a usage message for <b class="Sy">$0</b>, with
- <var class="Ar">commands</var> being the list of valid arguments prefixed
- by &#x201C;[fast|force|one]&#x201D;.</dd>
- <dt id="reverse_list~2"><a class="permalink" href="#reverse_list~2"><code class="Ic">reverse_list</code></a>
- <var class="Ar">item</var> [<var class="Ar">...</var>]</dt>
- <dd>Print the list of <var class="Ar">items</var> in reverse order.</dd>
- <dt id="run_rc_command~2"><a class="permalink" href="#run_rc_command~2"><code class="Ic">run_rc_command</code></a>
- <var class="Ar">argument</var> [<var class="Ar">parameter ...</var>]</dt>
- <dd>Run the <var class="Ar">argument</var> method for the current
- <a class="Xr">rc.d(8)</a> script, based on the settings of various shell
- variables. <code class="Ic">run_rc_command</code> is extremely flexible,
- and allows fully functional <a class="Xr">rc.d(8)</a> scripts to be
- implemented in a small amount of shell code. The optional set of
- parameters is passed verbatim to the command, but not to its pre/post
- hooks.
- <p class="Pp"><var class="Ar">argument</var> is searched for in the list of
- supported commands, which may be one of:</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="start"><a class="permalink" href="#start"><b class="Sy">start</b></a></dt>
- <dd>Start the service. This should check that the service is to be started
- as specified by <a class="Xr">rc.conf(5)</a>. Also checks if the
- service is already running and refuses to start if it is. This latter
- check is not performed by standard <span class="Ux">NetBSD</span>
- scripts if the system is starting directly to multi-user mode, to
- speed up the boot process.</dd>
- <dt id="stop"><a class="permalink" href="#stop"><b class="Sy">stop</b></a></dt>
- <dd>If the service is to be started as specified by
- <a class="Xr">rc.conf(5)</a>, stop the service. This should check that
- the service is running and complain if it's not.</dd>
- <dt id="restart"><a class="permalink" href="#restart"><b class="Sy">restart</b></a></dt>
- <dd>Perform a <b class="Sy">stop</b> then a <b class="Sy">start</b>.
- Defaults to displaying the process ID of the program (if
- running).</dd>
- <dt id="rcvar"><a class="permalink" href="#rcvar"><b class="Sy">rcvar</b></a></dt>
- <dd>Display which <a class="Xr">rc.conf(5)</a> variables are used to
- control the startup of the service (if any).</dd>
- </dl>
- </div>
- <p class="Pp">If <b class="Sy">pidfile</b> or <b class="Sy">procname</b> is
- set, also support:</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="poll"><a class="permalink" href="#poll"><b class="Sy">poll</b></a></dt>
- <dd>Wait for the command to exit.</dd>
- <dt id="status"><a class="permalink" href="#status"><b class="Sy">status</b></a></dt>
- <dd>Show the status of the process.</dd>
- </dl>
- </div>
- <p class="Pp">Other supported commands are listed in the optional variable
- <b class="Sy">extra_commands</b>.</p>
- <p class="Pp"><var class="Ar">argument</var> may have one of the following
- prefixes which alters its operation:</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="fast"><a class="permalink" href="#fast"><b class="Sy">fast</b></a></dt>
- <dd>Skip the check for an existing running process, and sets
- <a class="permalink" href="#rc_fast=YES"><b class="Sy" id="rc_fast=YES">rc_fast=YES</b></a>.</dd>
- <dt id="force"><a class="permalink" href="#force"><b class="Sy">force</b></a></dt>
- <dd>Skip the checks for <b class="Sy">rcvar</b> being set to yes, and sets
- <a class="permalink" href="#rc_force=YES"><b class="Sy" id="rc_force=YES">rc_force=YES</b></a>.
- This ignores <var class="Ar">argument</var><b class="Sy">_precmd</b>
- returning non-zero, and ignores any of the
- <b class="Sy">required_*</b> tests failing, and always returns a zero
- exit status.</dd>
- <dt id="one"><a class="permalink" href="#one"><b class="Sy">one</b></a></dt>
- <dd>Skip the checks for <b class="Sy">rcvar</b> being set to yes, but
- performs all the other prerequisite tests.</dd>
- </dl>
- </div>
- <p class="Pp"><code class="Ic">run_rc_command</code> uses the following
- shell variables to control its behaviour. Unless otherwise stated, these
- are optional.</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="name"><a class="permalink" href="#name"><b class="Sy">name</b></a></dt>
- <dd>The name of this script. This is not optional.</dd>
- <dt id="rcvar~2"><a class="permalink" href="#rcvar~2"><b class="Sy">rcvar</b></a></dt>
- <dd>The value of <b class="Sy">rcvar</b> is checked with
- <code class="Ic">checkyesno</code> to determine if this method should
- be run.</dd>
- <dt id="rcvar_manpage"><a class="permalink" href="#rcvar_manpage"><b class="Sy">rcvar_manpage</b></a></dt>
- <dd>The manual page containing information about <b class="Sy">rcvar</b>.
- It will be part of the warning message shown when
- <b class="Sy">rcvar</b> is undefined. Defaults to
- <a class="Xr">rc.conf(5)</a>.</dd>
- <dt id="command"><a class="permalink" href="#command"><b class="Sy">command</b></a></dt>
- <dd>Full path to the command. Not required if
- <var class="Ar">argument</var><b class="Sy">_cmd</b> is defined for
- each supported keyword.</dd>
- <dt id="command_args"><a class="permalink" href="#command_args"><b class="Sy">command_args</b></a></dt>
- <dd>Optional arguments and/or shell directives for
- <b class="Sy">command</b>.</dd>
- <dt id="command_interpreter"><a class="permalink" href="#command_interpreter"><b class="Sy">command_interpreter</b></a></dt>
- <dd><a class="permalink" href="#command~2"><b class="Sy" id="command~2">command</b></a>
- is started with
- <div class="Bd Bd-indent"><code class="Li">#! command_interpreter
- [...]</code></div>
- which results in its <a class="Xr">ps(1)</a> command being
- <div class="Bd Bd-indent"><code class="Li">command_interpreter [...]
- command</code></div>
- so use that string to find the PID(s) of the running command rather than
- &#x2018;<code class="Li">command</code>&#x2019;.</dd>
- <dt id="extra_commands"><a class="permalink" href="#extra_commands"><b class="Sy">extra_commands</b></a></dt>
- <dd>Extra commands/keywords/arguments supported.</dd>
- <dt id="pidfile"><a class="permalink" href="#pidfile"><b class="Sy">pidfile</b></a></dt>
- <dd>Path to pid file. Used to determine the PID(s) of the running command.
- If <b class="Sy">pidfile</b> is set, use
- <div class="Bd Bd-indent"><code class="Li">check_pidfile $pidfile
- $procname</code></div>
- to find the PID. Otherwise, if <b class="Sy">command</b> is set, use
- <div class="Bd Bd-indent"><code class="Li">check_process
- $procname</code></div>
- to find the PID.</dd>
- <dt id="procname"><a class="permalink" href="#procname"><b class="Sy">procname</b></a></dt>
- <dd>Process name to check for. Defaults to the value of
- <b class="Sy">command</b>.</dd>
- <dt id="required_dirs"><a class="permalink" href="#required_dirs"><b class="Sy">required_dirs</b></a></dt>
- <dd>Check for the existence of the listed directories before running the
- default start method.</dd>
- <dt id="required_files"><a class="permalink" href="#required_files"><b class="Sy">required_files</b></a></dt>
- <dd>Check for the readability of the listed files before running the
- default start method.</dd>
- <dt id="required_vars"><a class="permalink" href="#required_vars"><b class="Sy">required_vars</b></a></dt>
- <dd>Perform <code class="Ic">checkyesno</code> on each of the list
- variables before running the default start method.</dd>
- <dt id="$_name__chdir"><a class="permalink" href="#$_name__chdir"><b class="Sy">${name}_chdir</b></a></dt>
- <dd>Directory to <code class="Ic">cd</code> to before running
- <b class="Sy">command</b>, if <b class="Sy">${name}_chroot</b> is not
- provided.</dd>
- <dt id="$_name__chroot"><a class="permalink" href="#$_name__chroot"><b class="Sy">${name}_chroot</b></a></dt>
- <dd>Directory to <a class="Xr">chroot(8)</a> to before running
- <b class="Sy">command</b>. Only supported after
- <span class="Pa">/usr</span> is mounted.</dd>
- <dt id="$_name__env"><a class="permalink" href="#$_name__env"><b class="Sy">${name}_env</b></a></dt>
- <dd>List of additional or modified environment variables to set when
- starting <b class="Sy">command</b>.</dd>
- <dt id="$_name__flags"><a class="permalink" href="#$_name__flags"><b class="Sy">${name}_flags</b></a></dt>
- <dd>Arguments to call <b class="Sy">command</b> with. This is usually set
- in <a class="Xr">rc.conf(5)</a>, and not in the
- <a class="Xr">rc.d(8)</a> script. The environment variable
- &#x2018;<code class="Ev">flags</code>&#x2019; can be used to override
- this.</dd>
- <dt id="$_name__nice"><a class="permalink" href="#$_name__nice"><b class="Sy">${name}_nice</b></a></dt>
- <dd><a class="Xr">nice(1)</a> level to run <b class="Sy">command</b> as.
- Only supported after <span class="Pa">/usr</span> is mounted.</dd>
- <dt id="$_name__user"><a class="permalink" href="#$_name__user"><b class="Sy">${name}_user</b></a></dt>
- <dd>User to run <b class="Sy">command</b> as, using
- <a class="Xr">chroot(8)</a>. if <b class="Sy">${name}_chroot</b> is
- set, otherwise uses <a class="Xr">su(1)</a>. Only supported after
- <span class="Pa">/usr</span> is mounted.</dd>
- <dt id="$_name__group"><a class="permalink" href="#$_name__group"><b class="Sy">${name}_group</b></a></dt>
- <dd>Group to run the chrooted <b class="Sy">command</b> as.</dd>
- <dt id="$_name__groups"><a class="permalink" href="#$_name__groups"><b class="Sy">${name}_groups</b></a></dt>
- <dd>Comma separated list of supplementary groups to run the chrooted
- <b class="Sy">command</b> with.</dd>
- <dt><var class="Ar">argument</var><b class="Sy">_cmd</b></dt>
- <dd>Shell commands which override the default method for
- <var class="Ar">argument</var>.</dd>
- <dt><var class="Ar">argument</var><b class="Sy">_precmd</b></dt>
- <dd>Shell commands to run just before running
- <var class="Ar">argument</var><b class="Sy">_cmd</b> or the default
- method for <var class="Ar">argument</var>. If this returns a non-zero
- exit code, the main method is not performed. If the default method is
- being executed, this check is performed after the
- <b class="Sy">required_*</b> checks and process (non-)existence
- checks.</dd>
- <dt><var class="Ar">argument</var><b class="Sy">_postcmd</b></dt>
- <dd>Shell commands to run if running
- <var class="Ar">argument</var><b class="Sy">_cmd</b> or the default
- method for <var class="Ar">argument</var> returned a zero exit
- code.</dd>
- <dt id="sig_stop"><a class="permalink" href="#sig_stop"><b class="Sy">sig_stop</b></a></dt>
- <dd>Signal to send the processes to stop in the default
- <b class="Sy">stop</b> method. Defaults to
- <code class="Dv">SIGTERM</code>.</dd>
- <dt id="sig_reload"><a class="permalink" href="#sig_reload"><b class="Sy">sig_reload</b></a></dt>
- <dd>Signal to send the processes to reload in the default
- <b class="Sy">reload</b> method. Defaults to
- <code class="Dv">SIGHUP</code>.</dd>
- </dl>
- </div>
- <p class="Pp">For a given method <var class="Ar">argument</var>, if
- <var class="Ar">argument</var><b class="Sy">_cmd</b> is not defined,
- then a default method is provided by
- <b class="Sy">run_rc_command</b>:</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="Argument"><a class="permalink" href="#Argument"><b class="Sy">Argument</b></a></dt>
- <dd><a class="permalink" href="#Default"><b class="Sy" id="Default">Default
- method</b></a></dd>
- <dt id="start~2"><a class="permalink" href="#start~2"><b class="Sy">start</b></a></dt>
- <dd>If <b class="Sy">command</b> is not running and
- <code class="Ic">checkyesno</code> <b class="Sy">rcvar</b> succeeds,
- start <b class="Sy">command</b>.</dd>
- <dt id="stop~2"><a class="permalink" href="#stop~2"><b class="Sy">stop</b></a></dt>
- <dd>Determine the PIDs of <b class="Sy">command</b> with
- <code class="Ic">check_pidfile</code> or
- <code class="Ic">check_process</code> (as appropriate),
- <code class="Ic">kill</code> <b class="Sy">sig_stop</b> those PIDs,
- and run <code class="Ic">wait_for_pids</code> on those PIDs.</dd>
- <dt id="reload"><a class="permalink" href="#reload"><b class="Sy">reload</b></a></dt>
- <dd>Similar to <b class="Sy">stop</b>, except that it uses
- <b class="Sy">sig_reload</b> instead, and doesn't run
- <code class="Ic">wait_for_pids</code>.</dd>
- <dt id="restart~2"><a class="permalink" href="#restart~2"><b class="Sy">restart</b></a></dt>
- <dd>Runs the <b class="Sy">stop</b> method, then the
- <b class="Sy">start</b> method.</dd>
- <dt id="status~2"><a class="permalink" href="#status~2"><b class="Sy">status</b></a></dt>
- <dd>Show the PID of <b class="Sy">command</b>, or some other script
- specific status operation.</dd>
- <dt id="poll~2"><a class="permalink" href="#poll~2"><b class="Sy">poll</b></a></dt>
- <dd>Wait for <b class="Sy">command</b> to exit.</dd>
- <dt id="rcvar~3"><a class="permalink" href="#rcvar~3"><b class="Sy">rcvar</b></a></dt>
- <dd>Display which <a class="Xr">rc.conf(5)</a> variable is used (if any).
- This method always works, even if the appropriate
- <a class="Xr">rc.conf(5)</a> variable is set to
- &#x2018;NO&#x2019;.</dd>
- </dl>
- </div>
- <p class="Pp">The following variables are available to the methods (such as
- <var class="Ar">argument</var><b class="Sy">_cmd</b>) as well as after
- <code class="Ic">run_rc_command</code> has completed:</p>
- <div class="Bd-indent">
- <dl class="Bl-tag">
- <dt id="rc_arg"><a class="permalink" href="#rc_arg"><b class="Sy">rc_arg</b></a></dt>
- <dd>Argument provided to <b class="Sy">run_rc_command</b>, after fast and
- force processing has been performed.</dd>
- <dt id="rc_flags"><a class="permalink" href="#rc_flags"><b class="Sy">rc_flags</b></a></dt>
- <dd>Flags to start the default command with. Defaults to
- <b class="Sy">${name}_flags</b>, unless overridden by the environment
- variable &#x2018;<code class="Ev">flags</code>&#x2019;. This variable
- may be changed by the
- <var class="Ar">argument</var><b class="Sy">_precmd</b> method.</dd>
- <dt id="rc_pid"><a class="permalink" href="#rc_pid"><b class="Sy">rc_pid</b></a></dt>
- <dd>PID of <b class="Sy">command</b> (if appropriate).</dd>
- <dt id="rc_fast"><a class="permalink" href="#rc_fast"><b class="Sy">rc_fast</b></a></dt>
- <dd>Not empty if &#x201C;fast&#x201D; prefix was used.</dd>
- <dt id="rc_force"><a class="permalink" href="#rc_force"><b class="Sy">rc_force</b></a></dt>
- <dd>Not empty if &#x201C;force&#x201D; prefix was used.</dd>
- </dl>
- </div>
- </dd>
- <dt id="run_rc_script~2"><a class="permalink" href="#run_rc_script~2"><code class="Ic">run_rc_script</code></a>
- <var class="Ar">file</var> <var class="Ar">argument</var></dt>
- <dd>Start the script <var class="Ar">file</var> with an argument of
- <var class="Ar">argument</var>, and handle the return value from the
- script.
- <p class="Pp">Various shell variables are unset before
- <var class="Ar">file</var> is started:</p>
- <div class="Bd Pp Bd-indent"><b class="Sy">name</b>,
- <b class="Sy">command</b>, <b class="Sy">command_args</b>,
- <b class="Sy">command_interpreter</b>, <b class="Sy">extra_commands</b>,
- <b class="Sy">pidfile</b>, <b class="Sy">rcvar</b>,
- <b class="Sy">required_dirs</b>, <b class="Sy">required_files</b>,
- <b class="Sy">required_vars</b>,
- <var class="Ar">argument</var><b class="Sy">_cmd</b>,
- <var class="Ar">argument</var><b class="Sy">_precmd</b>.
- <var class="Ar">argument</var><b class="Sy">_postcmd</b>.</div>
- <p class="Pp">The startup behaviour of <var class="Ar">file</var> depends
- upon the following checks:</p>
- <ol class="Bl-enum">
- <li>If <var class="Ar">file</var> ends in <span class="Pa">.sh</span>, it
- is sourced into the current shell.</li>
- <li>If <var class="Ar">file</var> appears to be a backup or scratch file
- (e.g., with a suffix of &#x2018;~&#x2019;, &#x2018;#&#x2019;,
- &#x2018;.OLD&#x2019;, or &#x2018;.orig&#x2019;), ignore it.</li>
- <li>If <var class="Ar">file</var> is not executable, ignore it.</li>
- <li id="rc_fast_and_loose">If the <a class="Xr">rc.conf(5)</a> variable
- <a class="permalink" href="#rc_fast_and_loose"><b class="Sy">rc_fast_and_loose</b></a>
- is empty, source <var class="Ar">file</var> in a sub shell, otherwise
- source <var class="Ar">file</var> into the current shell.</li>
- <li>If <var class="Ar">file</var> contains the
- <a class="Xr">rcorder(8)</a> keyword &#x201C;interactive&#x201D;, then
- the command is executed using
- <code class="Ic">no_rc_postprocess</code>.</li>
- </ol>
- </dd>
- <dt id="stop_boot~2"><a class="permalink" href="#stop_boot~2"><code class="Ic">stop_boot</code></a></dt>
- <dd>Prevent booting to multiuser mode. If the
- <a class="permalink" href="#autoboot"><b class="Sy" id="autoboot">autoboot</b></a>
- variable is &#x2018;yes&#x2019;, then a
- <a class="permalink" href="#SIGTERM"><b class="Sy" id="SIGTERM">SIGTERM</b></a>
- signal is sent to the parent process (which is assumed to be
- <a class="Xr">rc(8)</a>). Otherwise, the shell exits with status
- <code class="Li">1</code>.</dd>
- <dt id="twiddle~2"><a class="permalink" href="#twiddle~2"><code class="Ic">twiddle</code></a></dt>
- <dd>Display one of the characters &#x2018;/, -, \, |&#x2019;, followed by a
- backspace. Repeated calls to this function will create the appearance of a
- spinning symbol, as a different character is displayed on each call.
- Output is to <span class="Pa">/dev/tty</span>, so this function may be
- useful even inside a script whose output has been redirected.</dd>
- <dt id="wait_for_pids~2"><a class="permalink" href="#wait_for_pids~2"><code class="Ic">wait_for_pids</code></a>
- [<var class="Ar">pid</var> [<var class="Ar">...</var>]]</dt>
- <dd>Wait until all of the provided <var class="Ar">pids</var> don't exist any
- more, printing the list of outstanding <var class="Ar">pids</var> every
- two seconds.</dd>
- <dt id="warn~2"><a class="permalink" href="#warn~2"><code class="Ic">warn</code></a>
- <var class="Ar">message</var></dt>
- <dd>Display a warning message to <i class="Em">stderr</i> and log it to the
- system log using <a class="Xr">logger(1)</a>. The warning message consists
- of the script name (from <b class="Sy">$0</b>), followed by &#x201C;:
- WARNING: &#x201D;, and then <var class="Ar">message</var>.</dd>
- <dt id="yesno_to_truefalse~2"><a class="permalink" href="#yesno_to_truefalse~2"><code class="Ic">yesno_to_truefalse</code></a>
- <var class="Ar">var</var></dt>
- <dd>Change the value of the specified variable from any of the forms
- acceptable to the <code class="Ic">checkyesno</code> function, to
- &#x201C;true&#x201D; or &#x201C;false&#x201D;.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
-<dl class="Bl-tag Bl-compact">
- <dt><span class="Pa">/etc/rc.subr</span></dt>
- <dd>The <code class="Nm">rc.subr</code> file resides in
- <span class="Pa">/etc</span>.</dd>
-</dl>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">rc.conf(5)</a>, <a class="Xr">rc(8)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp"><code class="Nm">rc.subr</code> appeared in
- <span class="Ux">NetBSD 1.3</span>. The <a class="Xr">rc.d(8)</a> support
- functions appeared in <span class="Ux">NetBSD 1.5</span>. Support for the
- <a class="Xr">rc(8)</a> post-processor appeared in <span class="Ux">NetBSD
- 6.0</span>.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 17, 2012</td>
- <td class="foot-os">NetBSD 10.1</td>
- </tr>
-</table>