1.\" Copyright (c) 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93 29.\" $FreeBSD: src/sbin/sysctl/sysctl.8,v 1.23.2.17 2003/05/19 07:49:34 brueffer Exp $ 30.\" $DragonFly: src/sbin/sysctl/sysctl.8,v 1.7 2007/10/02 12:57:00 hasso Exp $ 31.\" 32.Dd February 3, 2011 33.Dt SYSCTL 8 34.Os 35.Sh NAME 36.Nm sysctl 37.Nd get or set kernel state 38.Sh SYNOPSIS 39.Nm 40.Op Fl bdeiNnoqx 41.Ar name Ns Op = Ns Ar value 42.Ar ... 43.Nm 44.Op Fl bdeiNnoqx 45.Fl a 46.Sh DESCRIPTION 47The 48.Nm 49utility retrieves kernel state and allows processes with appropriate 50privilege to set kernel state. 51The state to be retrieved or set is described using a 52.Dq Management Information Base 53.Pq Dq MIB 54style name, described as a dotted set of 55components. 56.Pp 57The following options are available: 58.Bl -tag -width indent 59.It Fl A 60Equivalent to 61.Fl o a 62(for compatibility). 63.It Fl a 64List all the currently available non-opaque values. 65This option is ignored if one or more variable names are specified on 66the command line. 67.It Fl b 68Force the value of the variable(s) to be output in raw, binary format. 69No names are printed and no terminating newlines are output. 70This is mostly useful with a single variable. 71.It Fl d 72Print the description of the variable instead of its value. 73.It Fl e 74Separate the name and the value of the variable(s) with 75.Ql = . 76This is useful for producing output which can be fed back to the 77.Nm 78utility. 79This option is ignored if either 80.Fl N 81or 82.Fl n 83is specified, or a variable is being set. 84.It Fl i 85Exit cleanly (exit code 0) with no output if the sysctl does not exist. 86.It Fl N 87Show only variable names, not their values. 88This is particularly useful with shells that offer programmable 89completion. 90To enable completion of variable names in 91.Nm zsh , 92use the following code: 93.Bd -literal -offset indent 94listsysctls () { set -A reply $(sysctl -AN ${1%.*}) } 95compctl -K listsysctls sysctl 96.Ed 97.It Fl n 98Show only variable values, not their names. 99This option is useful for setting shell variables. 100For instance, to save the pagesize in variable 101.Va psize , 102use: 103.Pp 104.Dl "set psize=`sysctl -n hw.pagesize`" 105.It Fl o 106Show opaque variables (which are normally suppressed). 107The format and length are printed, as well as a hex dump of the first 108sixteen bytes of the value. 109.It Fl q 110Exit (exit code N) with no output if the sysctl does not exist. Each 111failed mib on the command line increments N. 112.It Fl X 113Equivalent to 114.Fl x a 115(for compatibility). 116.It Fl x 117As 118.Fl o , 119but prints a hex dump of the entire value instead of just the first 120few bytes. 121.El 122.Pp 123The information available from 124.Nm 125consists of integers, strings, devices 126.Pq Vt udev_t , 127and opaque types. 128The 129.Nm 130utility 131only knows about a couple of opaque types, and will resort to hexdumps 132for the rest. 133The opaque information is much more useful if retrieved by special 134purpose programs such as 135.Nm ps , 136.Nm systat 137and 138.Nm netstat . 139.Pp 140Some of the variables which cannot be modified during normal system 141operation can be initialized via 142.Xr loader 8 143tunables. 144This can for example be done by setting them in 145.Xr loader.conf 5 . 146Please refer to 147.Xr loader.conf 5 148for more information on which tunables are available and how to set them. 149.Pp 150The string and integer information is summarized below. 151For a detailed description of these variable see 152.Xr sysctl 3 . 153.Pp 154The changeable column indicates whether a process with appropriate 155privilege can change the value. 156String, integer, and devices values can be set using 157.Nm . 158For device values, 159.Cm value 160can be specified as a character device special file name. 161Special values 162.Cm off 163and 164.Ar none 165denote 166.Dq no device . 167.Bl -column net.inet.ip.forwardingxxxxxx integerxxx 168.It Sy "Name Type Changeable" 169.It "kern.ostype string no" 170.It "kern.osrelease string no" 171.It "kern.osrevision integer no" 172.It "kern.version string no" 173.It "kern.maxvnodes integer yes" 174.It "kern.maxproc integer no" 175.It "kern.maxprocperuid integer yes" 176.It "kern.maxfiles integer yes" 177.It "kern.maxfilesperproc integer yes" 178.It "kern.argmax integer no" 179.It "kern.securelevel integer raise only" 180.It "kern.hostname string yes" 181.It "kern.hostid integer yes" 182.It "kern.clockrate struct no" 183.It "kern.posix1version integer no" 184.It "kern.ngroups integer no" 185.It "kern.job_control integer no" 186.It "kern.saved_ids integer no" 187.It "kern.boottime struct no" 188.It "kern.domainname string yes" 189.It "kern.filedelay integer yes" 190.It "kern.dirdelay integer yes" 191.It "kern.metadelay integer yes" 192.It "kern.osreldate string no" 193.It "kern.bootfile string yes" 194.It "kern.corefile string yes" 195.It "kern.dumpdev udev_t yes" 196.It "kern.logsigexit integer yes" 197.It "vm.loadavg struct no" 198.It "hw.machine string no" 199.It "hw.model string no" 200.It "hw.ncpu integer no" 201.It "hw.byteorder integer no" 202.It "hw.physmem long no" 203.It "hw.usermem integer no" 204.It "hw.pagesize integer no" 205.It "hw.floatingpoint integer no" 206.It "hw.machine_arch string no" 207.It "hw.sensors.<xname>.<type><numt> struct no" 208.It "machdep.console_device udev_t no" 209.It "machdep.adjkerntz integer yes" 210.It "machdep.disable_rtc_set integer yes" 211.It "user.cs_path string no" 212.It "user.bc_base_max integer no" 213.It "user.bc_dim_max integer no" 214.It "user.bc_scale_max integer no" 215.It "user.bc_string_max integer no" 216.It "user.coll_weights_max integer no" 217.It "user.expr_nest_max integer no" 218.It "user.line_max integer no" 219.It "user.re_dup_max integer no" 220.It "user.posix2_version integer no" 221.It "user.posix2_c_bind integer no" 222.It "user.posix2_c_dev integer no" 223.It "user.posix2_char_term integer no" 224.It "user.posix2_fort_dev integer no" 225.It "user.posix2_fort_run integer no" 226.It "user.posix2_localedef integer no" 227.It "user.posix2_sw_dev integer no" 228.It "user.posix2_upe integer no" 229.It "user.stream_max integer no" 230.It "user.tzname_max integer no" 231.El 232.Sh FILES 233.Bl -tag -width ".In netinet/icmp_var.h" -compact 234.It In sys/sysctl.h 235definitions for top level identifiers, second level kernel and hardware 236identifiers, and user level identifiers 237.It In sys/socket.h 238definitions for second level network identifiers 239.It In sys/gmon.h 240definitions for third level profiling identifiers 241.It In vm/vm_param.h 242definitions for second level virtual memory identifiers 243.It In netinet/in.h 244definitions for third level Internet identifiers and 245fourth level IP identifiers 246.It In netinet/icmp_var.h 247definitions for fourth level ICMP identifiers 248.It In netinet/udp_var.h 249definitions for fourth level UDP identifiers 250.El 251.Sh EXAMPLES 252For example, to retrieve the maximum number of processes allowed 253in the system, one would use the following request: 254.Pp 255.Dl "sysctl kern.maxproc" 256.Pp 257To set the maximum number of processes allowed 258per uid to 1000, one would use the following request: 259.Pp 260.Dl "sysctl kern.maxprocperuid=1000" 261.Pp 262The device used for crash dumps can be specified using: 263.Pp 264.Dl "sysctl kern.dumpdev=/dev/somedev" 265.Pp 266which is equivalent to 267.Pp 268.Dl "dumpon /dev/somedev" 269.Pp 270Information about the system clock rate may be obtained with: 271.Pp 272.Dl "sysctl kern.clockrate" 273.Pp 274Information about the load average history may be obtained with: 275.Pp 276.Dl "sysctl vm.loadavg" 277.Pp 278More variables than these exist, and the best and likely only place 279to search for their deeper meaning is undoubtedly the source where 280they are defined. 281.Sh COMPATIBILITY 282The 283.Fl w 284option has been deprecated and is silently ignored. 285.Sh SEE ALSO 286.Xr sysctl 3 , 287.Xr loader.conf 5 , 288.Xr sysctl.conf 5 , 289.Xr loader 8 290.Sh HISTORY 291A 292.Nm 293utility first appeared in 294.Bx 4.4 . 295.Pp 296In 297.Fx 2.2 , 298.Nm 299was significantly remodeled. 300.Sh BUGS 301The 302.Nm 303utility presently exploits an undocumented interface to the kernel 304sysctl facility to traverse the sysctl tree and to retrieve format 305and name information. 306This correct interface is being thought about for the time being. 307