1be0696c1SRobert Garrett.\" $NetBSD: rc.subr.8,v 1.9 2002/07/08 16:14:55 atatat Exp $ 2be0696c1SRobert Garrett.\" $FreeBSD: src/share/man/man8/rc.subr.8,v 1.3 2003/04/22 05:13:55 dougb Exp $ 3be0696c1SRobert Garrett.\" Copyright (c) 2002 The NetBSD Foundation, Inc. 4be0696c1SRobert Garrett.\" All rights reserved. 5be0696c1SRobert Garrett.\" 6be0696c1SRobert Garrett.\" This code is derived from software contributed to The NetBSD Foundation 7be0696c1SRobert Garrett.\" by Luke Mewburn. 8be0696c1SRobert Garrett.\" 9be0696c1SRobert Garrett.\" Redistribution and use in source and binary forms, with or without 10be0696c1SRobert Garrett.\" modification, are permitted provided that the following conditions 11be0696c1SRobert Garrett.\" are met: 12be0696c1SRobert Garrett.\" 1. Redistributions of source code must retain the above copyright 13be0696c1SRobert Garrett.\" notice, this list of conditions and the following disclaimer. 14be0696c1SRobert Garrett.\" 2. Redistributions in binary form must reproduce the above copyright 15be0696c1SRobert Garrett.\" notice, this list of conditions and the following disclaimer in the 16be0696c1SRobert Garrett.\" documentation and/or other materials provided with the distribution. 17be0696c1SRobert Garrett.\" 3. All advertising materials mentioning features or use of this software 18be0696c1SRobert Garrett.\" must display the following acknowledgement: 19be0696c1SRobert Garrett.\" This product includes software developed by the NetBSD 20be0696c1SRobert Garrett.\" Foundation, Inc. and its contributors. 21be0696c1SRobert Garrett.\" 4. Neither the name of The NetBSD Foundation nor the names of its 22be0696c1SRobert Garrett.\" contributors may be used to endorse or promote products derived 23be0696c1SRobert Garrett.\" from this software without specific prior written permission. 24be0696c1SRobert Garrett.\" 25be0696c1SRobert Garrett.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26be0696c1SRobert Garrett.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27be0696c1SRobert Garrett.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28be0696c1SRobert Garrett.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29be0696c1SRobert Garrett.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30be0696c1SRobert Garrett.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31be0696c1SRobert Garrett.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32be0696c1SRobert Garrett.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33be0696c1SRobert Garrett.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34be0696c1SRobert Garrett.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35be0696c1SRobert Garrett.\" POSSIBILITY OF SUCH DAMAGE. 36be0696c1SRobert Garrett.\" 3717ddce97SSascha Wildner.Dd August 6, 2014 38be0696c1SRobert Garrett.Dt RC.SUBR 8 39be0696c1SRobert Garrett.Os 40be0696c1SRobert Garrett.Sh NAME 41be0696c1SRobert Garrett.Nm rc.subr 42be0696c1SRobert Garrett.Nd functions used by system shell scripts 43be0696c1SRobert Garrett.Sh SYNOPSIS 44be0696c1SRobert Garrett.Bl -item 45be0696c1SRobert Garrett.It 46be0696c1SRobert Garrett.Li . /etc/rc.subr 47be0696c1SRobert Garrett.It 48be0696c1SRobert Garrett.Ic backup_file Ar action Ar file Ar current Ar backup 49be0696c1SRobert Garrett.It 50be0696c1SRobert Garrett.Ic checkyesno Ar var 51be0696c1SRobert Garrett.It 52be0696c1SRobert Garrett.Ic check_pidfile Ar pidfile Ar procname Op Ar interpreter 53be0696c1SRobert Garrett.It 54be0696c1SRobert Garrett.Ic check_process Ar procname Op Ar interpreter 55be0696c1SRobert Garrett.It 56be0696c1SRobert Garrett.Ic debug Ar message 57be0696c1SRobert Garrett.It 58be0696c1SRobert Garrett.Ic err Ar exitval Ar message 59be0696c1SRobert Garrett.It 60be0696c1SRobert Garrett.Ic force_depend Ar name 61be0696c1SRobert Garrett.It 62be0696c1SRobert Garrett.Ic info Ar message 63be0696c1SRobert Garrett.It 64a4e8d389SPeter Avalos.Ic load_kld Oo Fl e Ar regex Oc Oo Fl m Ar module Oc Ar file 65a4e8d389SPeter Avalos.It 66be0696c1SRobert Garrett.Ic load_rc_config Ar command 67be0696c1SRobert Garrett.It 68be0696c1SRobert Garrett.Ic mount_critical_filesystems Ar type 69be0696c1SRobert Garrett.It 70be0696c1SRobert Garrett.Ic rc_usage Ar command Op Ar ... 71be0696c1SRobert Garrett.It 72be0696c1SRobert Garrett.Ic reverse_list Ar item Op Ar ... 73be0696c1SRobert Garrett.It 74be0696c1SRobert Garrett.Ic run_rc_command Ar argument 75be0696c1SRobert Garrett.It 76be0696c1SRobert Garrett.Ic run_rc_script Ar file Ar argument 77be0696c1SRobert Garrett.It 78be0696c1SRobert Garrett.Ic set_rcvar Op Ar base 79be0696c1SRobert Garrett.It 80be0696c1SRobert Garrett.Ic wait_for_pids Op Ar pid Op Ar ... 81be0696c1SRobert Garrett.It 82be0696c1SRobert Garrett.Ic warn Ar message 83be0696c1SRobert Garrett.El 84be0696c1SRobert Garrett.Sh DESCRIPTION 85be0696c1SRobert Garrett.Nm 86be0696c1SRobert Garrettcontains commonly used shell script functions and variable 87be0696c1SRobert Garrettdefinitions which are used by various scripts such as 88be0696c1SRobert Garrett.Xr rc 8 . 89be0696c1SRobert Garrett.Pp 90be0696c1SRobert GarrettThe 91be0696c1SRobert Garrett.Nm 92be0696c1SRobert Garrettfunctions were mostly imported from 93be0696c1SRobert Garrett.Nx 94be0696c1SRobert Garrettand it is intended that they remain synced between the 95be0696c1SRobert Garretttwo projects. With that in mind there are several variable 96be0696c1SRobert Garrettdefinitions that can help in this regard. They are: 97be0696c1SRobert Garrett.Bl -tag -width 4n 98be0696c1SRobert Garrett.It Ic OSTYPE 99be0696c1SRobert GarrettIts value will be either 100*5a7b5cadSSascha Wildner.Dx , 101*5a7b5cadSSascha Wildner.Fx , 102be0696c1SRobert Garrettor 103be0696c1SRobert Garrett.Nx , 104be0696c1SRobert Garrettdepending on which OS it is running on. 105be0696c1SRobert Garrett.It Ic SYSCTL 106be0696c1SRobert GarrettThe path to the 107be0696c1SRobert Garrett.Xr sysctl 8 108be0696c1SRobert Garrettcommand. 109be0696c1SRobert Garrett.It Ic SYSCTL_N 110be0696c1SRobert GarrettThe path and argument list to display only the 111be0696c1SRobert Garrett.Xr sysctl 8 112be0696c1SRobert Garrettvalues instead of a name=value pair. 113be0696c1SRobert Garrett.It Ic SYSCTL_W 114be0696c1SRobert GarrettThe path and argument to write or modify 115be0696c1SRobert Garrett.Xr sysctl 8 116be0696c1SRobert Garrettvalues. 117be0696c1SRobert Garrett.El 118be0696c1SRobert Garrett.Pp 119be0696c1SRobert GarrettThe 120be0696c1SRobert Garrett.Nm 121be0696c1SRobert Garrettfunctions are accessed by sourcing 122be0696c1SRobert Garrett.Pa /etc/rc.subr 123be0696c1SRobert Garrettinto the current shell. 124be0696c1SRobert Garrett.Pp 125be0696c1SRobert GarrettThe following shell functions are available: 126be0696c1SRobert Garrett.Bl -tag -width 4n 127be0696c1SRobert Garrett.It Xo 128be0696c1SRobert Garrett.Ic backup_file Ar action Ar file Ar current Ar backup 129be0696c1SRobert Garrett.Xc 130be0696c1SRobert GarrettMake a backup copy of 131be0696c1SRobert Garrett.Ar file 132be0696c1SRobert Garrettinto 133be0696c1SRobert Garrett.Ar current . 134be0696c1SRobert GarrettIf the 135be0696c1SRobert Garrett.Xr rc.conf 5 136be0696c1SRobert Garrettvariable 137be0696c1SRobert Garrett.Sy backup_uses_rcs 138be0696c1SRobert Garrettis 139be0696c1SRobert Garrett.Sq YES , 140be0696c1SRobert Garrettuse 141be0696c1SRobert Garrett.Xr rcs 1 142be0696c1SRobert Garrettto archive the previous version of 143be0696c1SRobert Garrett.Ar current , 144be0696c1SRobert Garrettotherwise save the previous version of 145be0696c1SRobert Garrett.Ar current 146be0696c1SRobert Garrettas 147be0696c1SRobert Garrett.Ar backup . 148be0696c1SRobert Garrett.Pp 149be0696c1SRobert Garrett.Ar action 150be0696c1SRobert Garrettmay be one of the following: 151be0696c1SRobert Garrett.Bl -tag -width remove 152be0696c1SRobert Garrett.It Sy add 153be0696c1SRobert Garrett.Ar file 154be0696c1SRobert Garrettis now being backed up by or possibly re-entered into this backup mechanism. 155be0696c1SRobert Garrett.Ar current 156be0696c1SRobert Garrettis created, and if necessary, the 157be0696c1SRobert Garrett.Xr rcs 1 158be0696c1SRobert Garrettfiles are created as well. 159be0696c1SRobert Garrett.It Sy update 160be0696c1SRobert Garrett.Ar file 161be0696c1SRobert Garretthas changed and needs to be backed up. 162be0696c1SRobert GarrettIf 163be0696c1SRobert Garrett.Ar current 164be0696c1SRobert Garrettexists, it is copied to 165be0696c1SRobert Garrett.Ar backup 166be0696c1SRobert Garrettor checked into 167be0696c1SRobert Garrett.Xr rcs 1 168be0696c1SRobert Garrett(if the repository file is old), 169be0696c1SRobert Garrettand then 170be0696c1SRobert Garrett.Ar file 171be0696c1SRobert Garrettis copied to 172be0696c1SRobert Garrett.Ar current . 173be0696c1SRobert Garrett.It Sy remove 174be0696c1SRobert Garrett.Ar file 175be0696c1SRobert Garrettis no longer being tracked by this backup mechanism. 176be0696c1SRobert GarrettIf 177be0696c1SRobert Garrett.Xr rcs 1 178be0696c1SRobert Garrettis being used, an empty file is checked in and 179be0696c1SRobert Garrett.Ar current 180be0696c1SRobert Garrettis removed, 181be0696c1SRobert Garrettotherwise 182be0696c1SRobert Garrett.Ar current 183be0696c1SRobert Garrettis moved to 184be0696c1SRobert Garrett.Ar backup . 185be0696c1SRobert Garrett.El 186be0696c1SRobert Garrett.It Ic checkyesno Ar var 187be0696c1SRobert GarrettReturn 0 if 188be0696c1SRobert Garrett.Ar var 189be0696c1SRobert Garrettis defined to 190be0696c1SRobert Garrett.Sq YES , 191be0696c1SRobert Garrett.Sq TRUE , 192be0696c1SRobert Garrett.Sq ON , 193be0696c1SRobert Garrettor 194be0696c1SRobert Garrett.Sq 1 . 195be0696c1SRobert GarrettReturn 1 if 196be0696c1SRobert Garrett.Ar var 197be0696c1SRobert Garrettis defined to 198be0696c1SRobert Garrett.Sq NO , 199be0696c1SRobert Garrett.Sq FALSE , 200be0696c1SRobert Garrett.Sq OFF , 201be0696c1SRobert Garrettor 202be0696c1SRobert Garrett.Sq 0 . 203be0696c1SRobert GarrettOtherwise, warn that 204be0696c1SRobert Garrett.Ar var 205be0696c1SRobert Garrettis not set correctly. 206be0696c1SRobert GarrettThe values are case insensitive. 207be0696c1SRobert Garrett.It Xo 208be0696c1SRobert Garrett.Ic check_pidfile 209be0696c1SRobert Garrett.Ar pidfile 210be0696c1SRobert Garrett.Ar procname 211be0696c1SRobert Garrett.Op Ar interpreter 212be0696c1SRobert Garrett.Xc 213be0696c1SRobert GarrettParses the first word of the first line of 214be0696c1SRobert Garrett.Ar pidfile 215be0696c1SRobert Garrettfor a PID, and ensures that the process with that PID 216be0696c1SRobert Garrettis running and its first argument matches 217be0696c1SRobert Garrett.Ar procname . 21883edae5dSSascha WildnerPrints the matching PID if successful, otherwise nothing. 219be0696c1SRobert GarrettIf 220be0696c1SRobert Garrett.Ar interpreter 221be0696c1SRobert Garrettis provided, parse the first line of 222be0696c1SRobert Garrett.Ar procname , 223be0696c1SRobert Garrettensure that the line is of the form 224be0696c1SRobert Garrett.Dl #! interpreter [...] 225be0696c1SRobert Garrettand use 226be0696c1SRobert Garrett.Ar interpreter 227be0696c1SRobert Garrettwith its optional arguments and 228be0696c1SRobert Garrett.Ar procname 229be0696c1SRobert Garrettappended as the process string to search for. 230be0696c1SRobert Garrett.It Ic check_process Ar procname Op Ar interpreter 231be0696c1SRobert GarrettPrints the PIDs of any processes that are running with a first 232be0696c1SRobert Garrettargument that matches 233be0696c1SRobert Garrett.Ar procname . 234be0696c1SRobert Garrett.Ar interpreter 235be0696c1SRobert Garrettis handled as per 236be0696c1SRobert Garrett.Ic check_pidfile . 237be0696c1SRobert Garrett.It Ic debug Ar message 238be0696c1SRobert GarrettDisplay a debugging message to 239be0696c1SRobert Garrett.Em stderr , 240be0696c1SRobert Garrettlog it to the system log using 241be0696c1SRobert Garrett.Xr logger 1 , 242be0696c1SRobert Garrettand 243be0696c1SRobert Garrettreturn to the caller. 244be0696c1SRobert GarrettThe error message consists of the script name 245be0696c1SRobert Garrett(from 246be0696c1SRobert Garrett.Sy $0 ) , 247be0696c1SRobert Garrettfollowed by 248be0696c1SRobert Garrett.Dq ": DEBUG: " , 249be0696c1SRobert Garrettand then 250be0696c1SRobert Garrett.Ar message . 251be0696c1SRobert GarrettThis function is intended to be used by developers 252be0696c1SRobert Garrettas an aid to debugging scripts. It can be turned on or off 253be0696c1SRobert Garrettby the 254be0696c1SRobert Garrett.Xr rc.conf 5 255be0696c1SRobert Garrettvariable 25680d66f6bSSascha Wildner.Va rc_debug . 257be0696c1SRobert Garrett.It Ic err Ar exitval Ar message 258be0696c1SRobert GarrettDisplay an error message to 259be0696c1SRobert Garrett.Em stderr , 260be0696c1SRobert Garrettlog it to the system log 261be0696c1SRobert Garrettusing 262be0696c1SRobert Garrett.Xr logger 1 , 263be0696c1SRobert Garrettand 264be0696c1SRobert Garrett.Cm exit 265be0696c1SRobert Garrettwith an exit value of 266be0696c1SRobert Garrett.Ar exitval . 267be0696c1SRobert GarrettThe error message consists of the script name 268be0696c1SRobert Garrett(from 269be0696c1SRobert Garrett.Sy $0 ) , 270be0696c1SRobert Garrettfollowed by 271be0696c1SRobert Garrett.Dq ": ERROR: " , 272be0696c1SRobert Garrettand then 273be0696c1SRobert Garrett.Ar message . 274be0696c1SRobert Garrett.It Ic force_depend name 275be0696c1SRobert GarrettOutput an advisory message and force the 276be0696c1SRobert Garrett.Ar name 277be0696c1SRobert Garrettservice to start. The 278be0696c1SRobert Garrett.Ar name 279be0696c1SRobert Garrettargument is the 280be0696c1SRobert Garrett.Xr basename 1 , 281be0696c1SRobert Garrettcomponent of the path to the script, usually 282be0696c1SRobert Garrett.Em /etc/rc.d/name . 283be0696c1SRobert GarrettIf the script fails for any reason it will output a warning 284be0696c1SRobert Garrettand return with a return value of 1. If it was successful 285be0696c1SRobert Garrettit will return 0. 286be0696c1SRobert Garrett.It Ic info Ar message 287be0696c1SRobert GarrettDisplay an informational message to 288be0696c1SRobert Garrett.Em stdout , 289be0696c1SRobert Garrettand log it to the system log using 290be0696c1SRobert Garrett.Xr logger 1 . 291be0696c1SRobert GarrettThe message consists of the script name 292be0696c1SRobert Garrett(from 293be0696c1SRobert Garrett.Sy $0 ) , 294be0696c1SRobert Garrettfollowed by 295be0696c1SRobert Garrett.Dq ": INFO: " , 296be0696c1SRobert Garrettand then 297be0696c1SRobert Garrett.Ar message . 298be0696c1SRobert GarrettThe display of this informational output can be 299be0696c1SRobert Garrettturned on or off by the 300be0696c1SRobert Garrett.Xr rc.conf 5 301be0696c1SRobert Garrettvariable 30280d66f6bSSascha Wildner.Va rc_info . 303a4e8d389SPeter Avalos.It Ic load_kld Oo Fl e Ar regex Oc Oo Fl m Ar module Oc Ar file 304a4e8d389SPeter AvalosLoad 305a4e8d389SPeter Avalos.Ar file 306a4e8d389SPeter Avalosas a kernel module unless it is already loaded. 307a4e8d389SPeter AvalosFor the purpose of checking the module status, 308a4e8d389SPeter Avaloseither the exact module name can be specified using 309a4e8d389SPeter Avalos.Fl m , 310a4e8d389SPeter Avalosor an 311a4e8d389SPeter Avalos.Xr egrep 1 312a4e8d389SPeter Avalosregular expression matching the module name can be supplied via 313a4e8d389SPeter Avalos.Fl e . 314a4e8d389SPeter AvalosBy default, the module is assumed to have the same name as 315a4e8d389SPeter Avalos.Ar file , 316a4e8d389SPeter Avaloswhich is not always the case. 317be0696c1SRobert Garrett.It Ic load_rc_config Ar command 318be0696c1SRobert GarrettSource in the configuration files for 319be0696c1SRobert Garrett.Ar command . 320be0696c1SRobert GarrettFirst, 321be0696c1SRobert Garrett.Pa /etc/rc.conf 322be0696c1SRobert Garrettis sourced if it has not yet been read in. 323be0696c1SRobert GarrettThen, 324be0696c1SRobert Garrett.Pa /etc/rc.conf.d/ Ns Ar command 325be0696c1SRobert Garrettis sourced if it is an existing file. 326be0696c1SRobert GarrettThe latter may also contain other variable assignments to override 327be0696c1SRobert Garrett.Ic run_rc_command 328be0696c1SRobert Garrettarguments defined by the calling script, to provide an easy 329be0696c1SRobert Garrettmechanism for an administrator to override the behaviour of a given 330be0696c1SRobert Garrett.Xr rc.d 8 331be0696c1SRobert Garrettscript without requiring the editing of that script. 332be0696c1SRobert Garrett.It Ic mount_critical_filesystems Ar type 333be0696c1SRobert GarrettGo through a list of critical file systems, 334be0696c1SRobert Garrettas found in the 335be0696c1SRobert Garrett.Xr rc.conf 5 336be0696c1SRobert Garrettvariable 337be0696c1SRobert Garrett.Sy critical_filesystems_ Ns Ar type , 338be0696c1SRobert Garrettmounting each one that 339be0696c1SRobert Garrettis not currently mounted. 340be0696c1SRobert Garrett.It Ic rc_usage Ar command Op Ar ... 341be0696c1SRobert GarrettPrint a usage message for 342be0696c1SRobert Garrett.Sy $0 , 343be0696c1SRobert Garrettwith 344be0696c1SRobert Garrett.Ar commands 345be0696c1SRobert Garrettbeing the list of valid arguments 346be0696c1SRobert Garrettprefixed by 34717ddce97SSascha Wildner.Sm off 34817ddce97SSascha Wildner.Dq Bq Li fast | force | one | quiet . 34917ddce97SSascha Wildner.Sm on 350be0696c1SRobert Garrett.It Ic reverse_list Ar item Op Ar ... 351be0696c1SRobert GarrettPrint the list of 352be0696c1SRobert Garrett.Ar items 353be0696c1SRobert Garrettin reverse order. 354be0696c1SRobert Garrett.It Ic run_rc_command Ar argument 355be0696c1SRobert GarrettRun the 356be0696c1SRobert Garrett.Ar argument 357be0696c1SRobert Garrettmethod for the current 358be0696c1SRobert Garrett.Xr rc.d 8 359be0696c1SRobert Garrettscript, based on the settings of various shell variables. 360be0696c1SRobert Garrett.Ic run_rc_command 361be0696c1SRobert Garrettis extremely flexible, and allows fully functional 362be0696c1SRobert Garrett.Xr rc.d 8 363be0696c1SRobert Garrettscripts to be implemented in a small amount of shell code. 364be0696c1SRobert Garrett.Pp 365be0696c1SRobert Garrett.Ar argument 366be0696c1SRobert Garrettis searched for in the list of supported commands, which may be one 367be0696c1SRobert Garrettof: 368be0696c1SRobert Garrett.Dl start stop restart rcvar 369be0696c1SRobert Garrettas well as any word listed in the optional variable 370be0696c1SRobert Garrett.Sy extra_commands . 371be0696c1SRobert GarrettIf 372be0696c1SRobert Garrett.Sy pidfile 373be0696c1SRobert Garrettor 374be0696c1SRobert Garrett.Sy procname 375be0696c1SRobert Garrettis set, also allow: 376be0696c1SRobert Garrett.Dl status poll 377be0696c1SRobert Garrett.Pp 378be0696c1SRobert Garrett.Ar argument 379be0696c1SRobert Garrettmay have one of the following prefixes which alters its operation: 380be0696c1SRobert Garrett.Bl -tag -width "Prefix" -offset indent -compact 381be0696c1SRobert Garrett.It Sy Prefix 382be0696c1SRobert Garrett.Sy Operation 383be0696c1SRobert Garrett.It Li fast 384be0696c1SRobert GarrettSkip the check for an existing running process, 385be0696c1SRobert Garrettand sets 386be0696c1SRobert Garrett.Sy rc_fast=YES . 387be0696c1SRobert Garrett.It Li force 388be0696c1SRobert GarrettSkip the checks for 389be0696c1SRobert Garrett.Sy rcvar 390be0696c1SRobert Garrettbeing set to yes, 391be0696c1SRobert Garrettand sets 392be0696c1SRobert Garrett.Sy rc_force=YES . 393be0696c1SRobert GarrettThis ignores 394be0696c1SRobert Garrett.Ar argument Ns Sy _precmd 395be0696c1SRobert Garrettreturning non-zero, and ignores any of the 396be0696c1SRobert Garrett.Sy required_* 397be0696c1SRobert Garretttests failing . 398225f540bSChris Turner.It Li one 399225f540bSChris TurnerSkip the checks for 400225f540bSChris Turner.Sy rcvar 401225f540bSChris Turnerbeing set to yes, but performs all the other prerequisite tests. 40217ddce97SSascha Wildner.It Li quiet 40317ddce97SSascha WildnerInhibits some verbose diagnostics. 40417ddce97SSascha WildnerCurrently, this includes messages 40517ddce97SSascha Wildner.Qq Starting ${name} 40617ddce97SSascha Wildner.\"(as checked by 40717ddce97SSascha Wildner.\".Ic check_startmsgs 40817ddce97SSascha Wildner.\"inside 40917ddce97SSascha Wildner.\".Nm ) 41017ddce97SSascha Wildnerand errors about usage of services that are not enabled in 41117ddce97SSascha Wildner.Xr rc.conf 5 . 41217ddce97SSascha WildnerThis prefix also sets 41317ddce97SSascha Wildner.Va rc_quiet Ns = Ns Li YES . 41417ddce97SSascha Wildner.Em Please, note: 41517ddce97SSascha Wildner.Va rc_quiet 41617ddce97SSascha Wildneris not intended to completely mask all debug and warning messages, 41717ddce97SSascha Wildnerbut only certain small classes of them. 418be0696c1SRobert Garrett.El 419be0696c1SRobert Garrett.Pp 420be0696c1SRobert Garrett.Ic run_rc_command 421be0696c1SRobert Garrettuses the following shell variables to control its behaviour. 422be0696c1SRobert GarrettUnless otherwise stated, these are optional. 423be0696c1SRobert Garrett.Bl -tag -width procname -offset indent 424be0696c1SRobert Garrett.It Sy name 425be0696c1SRobert GarrettThe name of this script. 426be0696c1SRobert GarrettThis is not optional. 427be0696c1SRobert Garrett.It Sy rcvar 428be0696c1SRobert GarrettThe value of 429be0696c1SRobert Garrett.Sy rcvar 430be0696c1SRobert Garrettis checked with 431be0696c1SRobert Garrett.Ic checkyesno 432be0696c1SRobert Garrettto determine if this method should be run. 433be0696c1SRobert Garrett.It Sy command 434be0696c1SRobert GarrettFull path to the command. 435be0696c1SRobert GarrettNot required if 436be0696c1SRobert Garrett.Ar argument Ns Sy _cmd 437be0696c1SRobert Garrettis defined for each supported keyword. 438be0696c1SRobert Garrett.It Sy command_args 439be0696c1SRobert GarrettOptional arguments and/or shell directives for 440be0696c1SRobert Garrett.Sy command . 441be0696c1SRobert Garrett.It Sy command_interpreter 442be0696c1SRobert Garrett.Sy command 443be0696c1SRobert Garrettis started with 444be0696c1SRobert Garrett.Dl #! command_interpreter [...] 445be0696c1SRobert Garrettwhich results in its 446be0696c1SRobert Garrett.Xr ps 1 447be0696c1SRobert Garrettcommand being 448be0696c1SRobert Garrett.Dl command_interpreter [...] command 449be0696c1SRobert Garrettso use that string to find the PID(s) of the running command 450be0696c1SRobert Garrettrather than 451be0696c1SRobert Garrett.Ql command . 452be0696c1SRobert Garrett.It Sy extra_commands 453be0696c1SRobert GarrettExtra commands/keywords/arguments supported. 454be0696c1SRobert Garrett.It Sy pidfile 455be0696c1SRobert GarrettPath to pid file. 456be0696c1SRobert GarrettUsed to determine the PID(s) of the running command. 457be0696c1SRobert GarrettIf 458be0696c1SRobert Garrett.Sy pidfile 459be0696c1SRobert Garrettis set, use 460be0696c1SRobert Garrett.Dl check_pidfile $pidfile $procname 461be0696c1SRobert Garrettto find the PID. 462be0696c1SRobert GarrettOtherwise, if 463be0696c1SRobert Garrett.Sy command 464be0696c1SRobert Garrettis set, use 465be0696c1SRobert Garrett.Dl check_process $procname 466be0696c1SRobert Garrettto find the PID. 467be0696c1SRobert Garrett.It Sy procname 468be0696c1SRobert GarrettProcess name to check for. 469be0696c1SRobert GarrettDefaults to the value of 470be0696c1SRobert Garrett.Sy command . 471be0696c1SRobert Garrett.It Sy required_dirs 472be0696c1SRobert GarrettCheck for the existence of the listed directories 473a4e8d389SPeter Avalosbefore running the start method. 474be0696c1SRobert Garrett.It Sy required_files 475be0696c1SRobert GarrettCheck for the readability of the listed files 476a4e8d389SPeter Avalosbefore running the start method. 477a4e8d389SPeter Avalos.It Sy required_modules 478a4e8d389SPeter AvalosEnsure that the listed kernel modules are loaded 479a4e8d389SPeter Avalosbefore running the 480a4e8d389SPeter Avalos.Cm start 481a4e8d389SPeter Avalosmethod. 482a4e8d389SPeter AvalosThis is done after invoking the commands from 483a4e8d389SPeter Avalos.Va start_precmd 484a4e8d389SPeter Avalosso that the missing modules are not loaded in vain 48552a88097SSascha Wildnerif the preliminary commands indicate an error condition. 486a4e8d389SPeter AvalosA word in the list can have an optional 487a4e8d389SPeter Avalos.Dq Li : Ns Ar modname 488a4e8d389SPeter Avalosor 489a4e8d389SPeter Avalos.Dq Li ~ Ns Ar pattern 490a4e8d389SPeter Avalossuffix. 491a4e8d389SPeter AvalosThe 492a4e8d389SPeter Avalos.Ar modname 493a4e8d389SPeter Avalosor 494a4e8d389SPeter Avalos.Ar pattern 495a4e8d389SPeter Avalosparameter is passed to 496a4e8d389SPeter Avalos.Ic load_kld 497a4e8d389SPeter Avalosthrough a 498a4e8d389SPeter Avalos.Fl m 499a4e8d389SPeter Avalosor 500a4e8d389SPeter Avalos.Fl e 501a4e8d389SPeter Avalosoption, respectively. 502a4e8d389SPeter AvalosSee the description of 503a4e8d389SPeter Avalos.Ic load_kld 504a4e8d389SPeter Avalosin this document for details. 505be0696c1SRobert Garrett.It Sy required_vars 506be0696c1SRobert GarrettPerform 507be0696c1SRobert Garrett.Ic checkyesno 508be0696c1SRobert Garretton each of the list variables 509be0696c1SRobert Garrettbefore running the default start method. 510be0696c1SRobert Garrett.It Sy ${name}_chdir 511be0696c1SRobert GarrettDirectory to 512be0696c1SRobert Garrett.Ic cd 513be0696c1SRobert Garrettto before running 514be0696c1SRobert Garrett.Sy command , 515be0696c1SRobert Garrettif 516be0696c1SRobert Garrett.Sy ${name}_chroot 517be0696c1SRobert Garrettis not provided. 518be0696c1SRobert Garrett.It Sy ${name}_chroot 519be0696c1SRobert GarrettDirectory to 520be0696c1SRobert Garrett.Xr chroot 8 521be0696c1SRobert Garrettto before running 522be0696c1SRobert Garrett.Sy command . 523be0696c1SRobert GarrettOnly supported after 524be0696c1SRobert Garrett.Pa /usr 525be0696c1SRobert Garrettis mounted. 526a512831cSMichael Neumann.It Va ${name}_env 527a512831cSMichael NeumannA list of environment variables to run 528a512831cSMichael Neumann.Va command 529a512831cSMichael Neumannwith. 530a512831cSMichael NeumannThis will be passed as arguments to 531a512831cSMichael Neumann.Xr env 1 532a512831cSMichael Neumannutility. 533be0696c1SRobert Garrett.It Sy ${name}_flags 534be0696c1SRobert GarrettArguments to call 535be0696c1SRobert Garrett.Sy command 536be0696c1SRobert Garrettwith. 537be0696c1SRobert GarrettThis is usually set in 538be0696c1SRobert Garrett.Xr rc.conf 5 , 539be0696c1SRobert Garrettand not in the 540be0696c1SRobert Garrett.Xr rc.d 8 541be0696c1SRobert Garrettscript. 542be0696c1SRobert GarrettThe environment variable 543be0696c1SRobert Garrett.Sq Ev flags 544be0696c1SRobert Garrettcan be used to override this. 545be0696c1SRobert Garrett.It Sy ${name}_nice 546be0696c1SRobert Garrett.Xr nice 1 547be0696c1SRobert Garrettlevel to run 548be0696c1SRobert Garrett.Sy command 549be0696c1SRobert Garrettas. 550be0696c1SRobert GarrettOnly supported after 551be0696c1SRobert Garrett.Pa /usr 552be0696c1SRobert Garrettis mounted. 553be0696c1SRobert Garrett.It Sy ${name}_user 554be0696c1SRobert GarrettUser to run 555be0696c1SRobert Garrett.Sy command 556be0696c1SRobert Garrettas, using 557be0696c1SRobert Garrett.Xr chroot 8 . 558be0696c1SRobert Garrettif 559be0696c1SRobert Garrett.Sy ${name}_chroot 560be0696c1SRobert Garrettis set, otherwise 561be0696c1SRobert Garrettuses 562be0696c1SRobert Garrett.Xr su 1 . 563be0696c1SRobert GarrettOnly supported after 564be0696c1SRobert Garrett.Pa /usr 565be0696c1SRobert Garrettis mounted. 566be0696c1SRobert Garrett.It Sy ${name}_group 567be0696c1SRobert GarrettGroup to run the chrooted 568be0696c1SRobert Garrett.Sy command 569be0696c1SRobert Garrettas. 570be0696c1SRobert Garrett.It Sy ${name}_groups 571be0696c1SRobert GarrettComma separated list of supplementary groups to run the chrooted 572be0696c1SRobert Garrett.Sy command 573be0696c1SRobert Garrettwith. 574a512831cSMichael Neumann.It Va ${name}_prepend 575a512831cSMichael NeumannCommands to be prepended to 576a512831cSMichael Neumann.Va command . 577a512831cSMichael NeumannThis is a generic version of 578a512831cSMichael Neumann.Va ${name}_env 579a512831cSMichael Neumannor 580a512831cSMichael Neumann.Va ${name}_nice . 581be0696c1SRobert Garrett.It Ar argument Ns Sy _cmd 582be0696c1SRobert GarrettShell commands which override the default method for 583be0696c1SRobert Garrett.Ar argument . 584be0696c1SRobert Garrett.It Ar argument Ns Sy _precmd 585be0696c1SRobert GarrettShell commands to run just before running 586be0696c1SRobert Garrett.Ar argument Ns Sy _cmd 587be0696c1SRobert Garrettor the default method for 588be0696c1SRobert Garrett.Ar argument . 589be0696c1SRobert GarrettIf this returns a non-zero exit code, the main method is not performed. 590be0696c1SRobert GarrettIf the default method is being executed, this check is performed after 591be0696c1SRobert Garrettthe 592be0696c1SRobert Garrett.Sy required_* 593be0696c1SRobert Garrettchecks and process (non-)existence checks. 594be0696c1SRobert Garrett.It Ar argument Ns Sy _postcmd 595be0696c1SRobert GarrettShell commands to run if running 596be0696c1SRobert Garrett.Ar argument Ns Sy _cmd 597be0696c1SRobert Garrettor the default method for 598be0696c1SRobert Garrett.Ar argument 599be0696c1SRobert Garrettreturned a zero exit code. 600be0696c1SRobert Garrett.It Sy sig_stop 601be0696c1SRobert GarrettSignal to send the processes to stop in the default 602be0696c1SRobert Garrett.Sy stop 603be0696c1SRobert Garrettmethod. 604be0696c1SRobert GarrettDefaults to 605be0696c1SRobert Garrett.Dv SIGTERM . 606be0696c1SRobert Garrett.It Sy sig_reload 607be0696c1SRobert GarrettSignal to send the processes to reload in the default 608be0696c1SRobert Garrett.Sy reload 609be0696c1SRobert Garrettmethod. 610be0696c1SRobert GarrettDefaults to 611be0696c1SRobert Garrett.Dv SIGHUP . 612be0696c1SRobert Garrett.El 613be0696c1SRobert Garrett.Pp 614be0696c1SRobert GarrettFor a given method 615be0696c1SRobert Garrett.Ar argument , 616be0696c1SRobert Garrettif 617be0696c1SRobert Garrett.Ar argument Ns Sy _cmd 618be0696c1SRobert Garrettis not defined, then a default method is provided by 619be0696c1SRobert Garrett.Sy run_rc_command : 620be0696c1SRobert Garrett.Bl -tag -width "argument" -offset indent 621be0696c1SRobert Garrett.It Sy Argument 622be0696c1SRobert Garrett.Sy Default method 623be0696c1SRobert Garrett.It Sy start 624be0696c1SRobert GarrettIf 625be0696c1SRobert Garrett.Sy command 626be0696c1SRobert Garrettis not running and 627be0696c1SRobert Garrett.Ic checkyesno Sy rcvar 628be0696c1SRobert Garrettsucceeds, start 629be0696c1SRobert Garrett.Sy command . 630be0696c1SRobert Garrett.It Sy stop 631be0696c1SRobert GarrettDetermine the PIDs of 632be0696c1SRobert Garrett.Sy command 633be0696c1SRobert Garrettwith 634be0696c1SRobert Garrett.Ic check_pidfile 635be0696c1SRobert Garrettor 636be0696c1SRobert Garrett.Ic check_process 637be0696c1SRobert Garrett(as appropriate), 638be0696c1SRobert Garrett.Ic kill Sy sig_stop 639be0696c1SRobert Garrettthose PIDs, and run 640be0696c1SRobert Garrett.Ic wait_for_pids 641be0696c1SRobert Garretton those PIDs. 642be0696c1SRobert Garrett.It Sy reload 643be0696c1SRobert GarrettSimilar to 644be0696c1SRobert Garrett.Sy stop , 645be0696c1SRobert Garrettexcept that it uses 646be0696c1SRobert Garrett.Sy sig_reload 647be0696c1SRobert Garrettinstead, and doesn't run 648be0696c1SRobert Garrett.Ic wait_for_pids . 649be0696c1SRobert Garrett.It Sy restart 650be0696c1SRobert GarrettRuns the 651be0696c1SRobert Garrett.Sy stop 652be0696c1SRobert Garrettmethod, then the 653be0696c1SRobert Garrett.Sy start 654be0696c1SRobert Garrettmethod. 655be0696c1SRobert Garrett.It Sy status 656be0696c1SRobert GarrettShow the PID of 657be0696c1SRobert Garrett.Sy command , 658be0696c1SRobert Garrettor some other script specific status operation. 659be0696c1SRobert Garrett.It Sy poll 660be0696c1SRobert GarrettWait for 661be0696c1SRobert Garrett.Sy command 662be0696c1SRobert Garrettto exit. 663be0696c1SRobert Garrett.It Sy rcvar 664be0696c1SRobert GarrettDisplay which 665be0696c1SRobert Garrett.Xr rc.conf 5 666be0696c1SRobert Garrettvariable is used (if any). 667be0696c1SRobert GarrettThis method always works, even if the appropriate 668be0696c1SRobert Garrett.Xr rc.conf 5 669be0696c1SRobert Garrettvariable is set to 670be0696c1SRobert Garrett.Sq NO . 671be0696c1SRobert Garrett.El 672be0696c1SRobert Garrett.Pp 673be0696c1SRobert GarrettThe following variables are available to the methods 674be0696c1SRobert Garrett(such as 675be0696c1SRobert Garrett.Ar argument Ns Sy _cmd ) 676be0696c1SRobert Garrettas well as after 677be0696c1SRobert Garrett.Ic run_rc_command 678be0696c1SRobert Garretthas completed: 679be0696c1SRobert Garrett.Bl -tag -width "rc_flags" -offset indent 680be0696c1SRobert Garrett.It Sy rc_arg 681be0696c1SRobert GarrettArgument provided to 682be0696c1SRobert Garrett.Sy run_rc_command , 683be0696c1SRobert Garrettafter fast and force processing has been performed. 684be0696c1SRobert Garrett.It Sy rc_flags 685be0696c1SRobert GarrettFlags to start the default command with. 686be0696c1SRobert GarrettDefaults to 687be0696c1SRobert Garrett.Sy ${name}_flags , 688be0696c1SRobert Garrettunless overridden by the environment variable 689be0696c1SRobert Garrett.Sq Ev flags . 690be0696c1SRobert GarrettThis variable may be changed by the 691be0696c1SRobert Garrett.Ar argument Ns Sy _precmd 692be0696c1SRobert Garrettmethod. 693be0696c1SRobert Garrett.It Sy rc_pid 694be0696c1SRobert GarrettPID of 695be0696c1SRobert Garrett.Sy command 696be0696c1SRobert Garrett(if appropriate). 697be0696c1SRobert Garrett.It Sy rc_fast 698be0696c1SRobert GarrettNot empty if 699be0696c1SRobert Garrett.Dq fast 700be0696c1SRobert Garrettprefix was used. 701be0696c1SRobert Garrett.It Sy rc_force 702be0696c1SRobert GarrettNot empty if 703be0696c1SRobert Garrett.Dq force 704be0696c1SRobert Garrettprefix was used. 705be0696c1SRobert Garrett.El 706be0696c1SRobert Garrett.It Ic run_rc_script Ar file Ar argument 707be0696c1SRobert GarrettStart the script 708be0696c1SRobert Garrett.Ar file 709be0696c1SRobert Garrettwith an argument of 710be0696c1SRobert Garrett.Ar argument , 711be0696c1SRobert Garrettand handle the return value from the script. 712be0696c1SRobert Garrett.Pp 713be0696c1SRobert GarrettVarious shell variables are unset before 714be0696c1SRobert Garrett.Ar file 715be0696c1SRobert Garrettis started: 716be0696c1SRobert Garrett.Bd -ragged -offset indent 717be0696c1SRobert Garrett.Sy name , 718be0696c1SRobert Garrett.Sy command , 719be0696c1SRobert Garrett.Sy command_args , 720be0696c1SRobert Garrett.Sy command_interpreter , 721be0696c1SRobert Garrett.Sy extra_commands , 722be0696c1SRobert Garrett.Sy pidfile , 723be0696c1SRobert Garrett.Sy rcvar , 724be0696c1SRobert Garrett.Sy required_dirs , 725be0696c1SRobert Garrett.Sy required_files , 726be0696c1SRobert Garrett.Sy required_vars , 727be0696c1SRobert Garrett.Ar argument Ns Sy _cmd , 728be0696c1SRobert Garrett.Ar argument Ns Sy _precmd . 729be0696c1SRobert Garrett.Ar argument Ns Sy _postcmd . 730be0696c1SRobert Garrett.Ed 731be0696c1SRobert Garrett.Pp 732be0696c1SRobert GarrettThe startup behaviour of 733be0696c1SRobert Garrett.Ar file 734be0696c1SRobert Garrettdepends upon the following checks: 735be0696c1SRobert Garrett.Bl -enum 736be0696c1SRobert Garrett.It 737be0696c1SRobert GarrettIf 738be0696c1SRobert Garrett.Ar file 739be0696c1SRobert Garrettends in 740be0696c1SRobert Garrett.Pa .sh , 741be0696c1SRobert Garrettit is sourced into the current shell. 742be0696c1SRobert Garrett.It 743be0696c1SRobert GarrettIf 744be0696c1SRobert Garrett.Ar file 745be0696c1SRobert Garrettappears to be a backup or scratch file 746be0696c1SRobert Garrett(e.g., with a suffix of 747be0696c1SRobert Garrett.Sq ~ , 748be0696c1SRobert Garrett.Sq # , 749be0696c1SRobert Garrett.Sq .OLD , 750be0696c1SRobert Garrettor 751be0696c1SRobert Garrett.Sq .orig ) , 752be0696c1SRobert Garrettignore it. 753be0696c1SRobert Garrett.It 754be0696c1SRobert GarrettIf 755be0696c1SRobert Garrett.Ar file 756be0696c1SRobert Garrettis not executable, ignore it. 757be0696c1SRobert Garrett.It 758be0696c1SRobert GarrettIf the 759be0696c1SRobert Garrett.Xr rc.conf 5 760be0696c1SRobert Garrettvariable 761be0696c1SRobert Garrett.Sy rc_fast_and_loose 762be0696c1SRobert Garrettis empty, 763be0696c1SRobert Garrettsource 764be0696c1SRobert Garrett.Ar file 765be0696c1SRobert Garrettin a sub shell, 766be0696c1SRobert Garrettotherwise source 767be0696c1SRobert Garrett.Ar file 768be0696c1SRobert Garrettinto the current shell. 769be0696c1SRobert Garrett.El 770be0696c1SRobert Garrett.It Ic set_rcvar Op Ar base 771be0696c1SRobert GarrettSet the variable name required to start a service. In 7729bb2a92dSHiten Pandya.Dx 773be0696c1SRobert Garretta daemon is usually controlled by an 774be0696c1SRobert Garrett.Xr rc.conf 5 77502d57835SSascha Wildnervariable consisting of a daemon's name optionally postfixed by the string 77602d57835SSascha Wildner.Sy "_enable" . 777be0696c1SRobert GarrettWhen the following line is included in a script 778be0696c1SRobert Garrett.Pp 779be0696c1SRobert Garrett.Dl rcvar=`set_rcvar` 780be0696c1SRobert Garrett.Pp 781be0696c1SRobert GarrettThis function will use the value of the 782be0696c1SRobert Garrett.Sy $name 783be0696c1SRobert Garrettvariable, which should be defined by the calling script, to construct the appropriate 784be0696c1SRobert Garrett.Xr rc.conf 5 785be0696c1SRobert Garrettknob. If the 786be0696c1SRobert Garrett.Ar base 787be0696c1SRobert Garrettargument is set it will use 788be0696c1SRobert Garrett.Ar base 789be0696c1SRobert Garrettinstead of 790be0696c1SRobert Garrett.Sy $name . 791be0696c1SRobert Garrett.It Ic wait_for_pids Op Ar pid Op Ar ... 792be0696c1SRobert GarrettWait until all of the provided 793be0696c1SRobert Garrett.Ar pids 794be0696c1SRobert Garrettdon't exist anymore, printing the list of outstanding 795be0696c1SRobert Garrett.Ar pids 796be0696c1SRobert Garrettevery two seconds. 797be0696c1SRobert Garrett.It Ic warn Ar message 798be0696c1SRobert GarrettDisplay a warning message to 799be0696c1SRobert Garrett.Em stderr 800be0696c1SRobert Garrettand log it to the system log 801be0696c1SRobert Garrettusing 802be0696c1SRobert Garrett.Xr logger 1 . 803be0696c1SRobert GarrettThe warning message consists of the script name 804be0696c1SRobert Garrett(from 805be0696c1SRobert Garrett.Sy $0 ) , 806be0696c1SRobert Garrettfollowed by 807be0696c1SRobert Garrett.Dq ": WARNING: " , 808be0696c1SRobert Garrettand then 809be0696c1SRobert Garrett.Ar message . 810be0696c1SRobert Garrett.El 811be0696c1SRobert Garrett.Sh FILES 812be0696c1SRobert Garrett.Bl -tag -width /etc/rc.subr -compact 813be0696c1SRobert Garrett.It Pa /etc/rc.subr 814be0696c1SRobert GarrettThe 815be0696c1SRobert Garrett.Nm 816be0696c1SRobert Garrettfile resides in 817be0696c1SRobert Garrett.Pa /etc . 818be0696c1SRobert Garrett.El 819be0696c1SRobert Garrett.Sh SEE ALSO 820be0696c1SRobert Garrett.Xr rc.conf 5 , 821be0696c1SRobert Garrett.Xr rc 8 822be0696c1SRobert Garrett.Sh HISTORY 823be0696c1SRobert Garrett.Nm 824be0696c1SRobert Garrettappeared in 825be0696c1SRobert Garrett.Nx 1.3 . 826be0696c1SRobert GarrettThe 827be0696c1SRobert Garrett.Xr rc.d 8 828be0696c1SRobert Garrettsupport functions appeared in 829be0696c1SRobert Garrett.Nx 1.5 . 830be0696c1SRobert Garrett.Nm 831be0696c1SRobert Garrettfirst appeared in 832be0696c1SRobert Garrett.Fx 5.0 . 833