diff options
Diffstat (limited to 'static/netbsd/man8/rc.subr.8 4.html')
| -rw-r--r-- | static/netbsd/man8/rc.subr.8 4.html | 575 |
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> — - <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 ‘YES’, 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 ‘YES’, - ‘TRUE’, ‘ON’, or ‘1’. Return 1 - if <var class="Ar">var</var> is defined to ‘NO’, - ‘FALSE’, ‘OFF’, or ‘0’. - 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 - ⟨backslash⟩⟨newline⟩ 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 - “: ERROR: ”, 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 - “interactive”. - <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 “note:”, 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 - “note:” 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 “<b class="Sy">print_rc_normal</b> - <code class="Fl">-n</code>” 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 “[fast|force|one]”.</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 - ‘<code class="Li">command</code>’.</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 - ‘<code class="Ev">flags</code>’ 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 - ‘NO’.</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 ‘<code class="Ev">flags</code>’. 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 “fast” 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 “force” 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 ‘~’, ‘#’, - ‘.OLD’, or ‘.orig’), 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 “interactive”, 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 ‘yes’, 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 ‘/, -, \, |’, 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 “: - WARNING: ”, 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 - “true” or “false”.</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> |
