1.\" $NetBSD: sysctl.8,v 1.60 2000/11/08 22:48:32 eeh Exp $ 2.\" 3.\" Copyright (c) 1993 4.\" The Regents of the University of California. All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 3. All advertising materials mentioning features or use of this software 15.\" must display the following acknowledgement: 16.\" This product includes software developed by the University of 17.\" California, Berkeley and its contributors. 18.\" 4. Neither the name of the University nor the names of its contributors 19.\" may be used to endorse or promote products derived from this software 20.\" without specific prior written permission. 21.\" 22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32.\" SUCH DAMAGE. 33.\" 34.\" @(#)sysctl.8 8.1 (Berkeley) 6/6/93 35.\" 36.Dd June 6, 1993 37.Dt SYSCTL 8 38.Os 39.Sh NAME 40.Nm sysctl 41.Nd get or set kernel state 42.Sh SYNOPSIS 43.Nm sysctl 44.Op Fl n 45.Ar name ... 46.Nm sysctl 47.Op Fl n 48.Fl w 49.Ar name Ns Li = Ns Ar value ... 50.Nm sysctl 51.Op Fl n 52.Fl a 53.Nm sysctl 54.Op Fl n 55.Fl A 56.Nm sysctl 57.Op Fl n 58.Fl f 59.Ar file 60.Sh DESCRIPTION 61The 62.Nm sysctl 63utility retrieves kernel state and allows processes with 64appropriate privilege to set kernel state. 65The state to be retrieved or set is described using a 66``Management Information Base'' (``MIB'') style name, 67described as a dotted set of components. 68The 69.Fl a 70flag can be used to list all the currently available string or integer values. 71The 72.Fl A 73flag will list all the known MIB names including tables. 74Those with string or integer values will be printed as with the 75.Fl a 76flag; for the table values, 77the name of the utility to retrieve them is given. 78.Pp 79The 80.Fl n 81flag specifies that the printing of the field name should be 82suppressed and that only its value should be output. 83This flag is useful for setting shell variables. 84For example, to save the pagesize in variable psize, use: 85.Bd -literal -offset indent -compact 86set psize=`sysctl -n hw.pagesize` 87.Ed 88.Pp 89If just a MIB style name is given, 90the corresponding value is retrieved. 91If a value is to be set, the 92.Fl w 93flag must be specified and the MIB name followed 94by an equal sign and the new value to be used. 95.Pp 96The 97.Fl f 98flag specifies the name of a file to read and process. Blank lines and 99comments (beginning with 100.Ql # ) 101are ignored. Line continuations with 102.Ql \e 103are permitted. Remaining lines are processed similarly to 104command line arguments of the form 105.Ar name 106or 107.Ar name Ns Li = Ns Ar value . 108The 109.Fl w 110flag is implied by 111.Fl f . 112.Pp 113The 114.Ql proc 115top-level MIB has a special semantic: it represent per-process values 116and as such may differ from one process to another. The second-level name 117is the pid of the process (in decimal form), or the special word 118.Ql curproc . 119For variables below 120.Ql proc.<pid>.rlimit , 121the integer value may be replaced 122with the string 123.Ql unlimited 124if it matches the magic value used to disable 125a limit. 126.Pp 127The information available from 128.Nm sysctl 129consists of integers, strings, and tables. 130The tabular information can only be retrieved by special 131purpose programs such as 132.Nm ps , 133.Nm systat , 134and 135.Nm netstat . 136The string and integer information is summarized below. 137For a detailed description of these variable see 138.Xr sysctl 3 . 139The changeable column indicates whether a process with appropriate 140privilege can change the value. 141.Bl -column proc.<pid>.rlimit.coredumpsize.hardxxxxxx integerxxx 142.It Sy Name Type Changeable 143.It ddb.fromconsole integer yes 144.It ddb.lines integer yes 145.It ddb.maxoff integer yes 146.It ddb.maxwidth integer yes 147.It ddb.onpanic integer yes 148.It ddb.radix integer yes 149.It ddb.tabstops integer yes 150.It hw.alignbytes integer no 151.It hw.byteorder integer no 152.\".It hw.disknames struct no 153.\".It hw.diskstats struct no 154.It hw.machine string no 155.It hw.machine_arch string no 156.It hw.model string no 157.It hw.ncpu integer no 158.It hw.pagesize integer no 159.It hw.physmem integer no 160.It hw.usermem integer no 161.It hw.cnmagic string yes 162.It kern.argmax integer no 163.It kern.autonicetime integer yes 164.It kern.autoniceval integer yes 165.It kern.boottime struct no 166.It kern.chown_restricted integer no 167.It kern.clockrate struct no 168.It kern.defcorename string yes 169.It kern.fsync integer no 170.It kern.hostid integer yes 171.It kern.hostname string yes 172.It kern.iov_max integer no 173.It kern.job_control integer no 174.It kern.link_max integer no 175.It kern.login_name_max integer no 176.It kern.logsigexit integer yes 177.It kern.max_canon integer no 178.It kern.max_input integer no 179.It kern.maxfiles integer yes 180.It kern.maxpartitions integer no 181.It kern.maxproc integer yes 182.It kern.maxptys integer yes, special 183.It kern.maxvnodes integer raise only 184.It kern.mapped_files integer no 185.It kern.memlock integer no 186.It kern.memlock_rage integer no 187.It kern.memory_protection integer no 188.It kern.mbuf.mblowat integer yes 189.It kern.mbuf.mcllowat integer yes 190.It kern.mbuf.mclsize integer no 191.It kern.mbuf.msize integer no 192.It kern.mbuf.nmbclusters integer raise only 193.It kern.msgbufsize integer no 194.It kern.name_max integer no 195.It kern.ngroups integer no 196.It kern.no_trunc integer no 197.It kern.osrelease string no 198.It kern.osrevision integer no 199.It kern.ostype string no 200.It kern.path_max integer no 201.It kern.pipe_buf integer no 202.It kern.posix1version integer no 203.It kern.rawpartition integer no 204.It kern.saved_ids integer no 205.It kern.securelevel integer raise only 206.It kern.synchronized_io integer no 207.It kern.sysvmsg integer no 208.It kern.sysvsem integer no 209.It kern.sysvshm integer no 210.It kern.vdisable integer no 211.It kern.version string no 212.It machdep.console_device dev_t no 213.It net.inet.icmp.maskrepl integer yes 214.It net.inet.icmp.errppslimit integer yes 215.It net.inet.ip.allowsrcrt integer yes 216.It net.inet.ip.anonportmax integer yes 217.It net.inet.ip.anonportmin integer yes 218.It net.inet.ip.directed-broadcast integer yes 219.It net.inet.ip.forwarding integer yes 220.It net.inet.ip.forwsrcrt integer yes 221.It net.inet.ip.lowportmax integer yes 222.It net.inet.ip.lowportmin integer yes 223.It net.inet.ip.mtudisc integer yes 224.It net.inet.ip.mtudisctimeout integer yes 225.It net.inet.ip.redirect integer yes 226.It net.inet.ip.subnetsarelocal integer yes 227.It net.inet.ip.ttl integer yes 228.It net.inet.ipsec.ah_cleartos integer yes 229.It net.inet.ipsec.ah_net_deflev integer yes 230.It net.inet.ipsec.ah_offsetmask integer yes 231.It net.inet.ipsec.ah_trans_deflev integer yes 232.It net.inet.ipsec.def_policy integer yes 233.It net.inet.ipsec.dfbit integer yes 234.It net.inet.ipsec.ecn integer yes 235.It net.inet.ipsec.esp_net_deflev integer yes 236.It net.inet.ipsec.esp_trans_deflev integer yes 237.It net.inet.ipsec.inbound_call_ike integer yes 238.It net.inet.tcp.ack_on_push integer yes 239.It net.inet.tcp.compat_42 integer yes 240.It net.inet.tcp.cwm integer yes 241.It net.inet.tcp.cwm_burstsize integer yes 242.It net.inet.tcp.init_win integer yes 243.It net.inet.tcp.init_win integer yes 244.It net.inet.tcp.keepcnt integer yes 245.It net.inet.tcp.keepidle integer yes 246.It net.inet.tcp.keepintvl integer yes 247.It net.inet.tcp.log_refused integer yes 248.It net.inet.tcp.mss_ifmtu integer yes 249.It net.inet.tcp.mssdflt integer yes 250.It net.inet.tcp.recvspace integer yes 251.It net.inet.tcp.rfc1323 integer yes 252.It net.inet.tcp.rstppslimit integer yes 253.It net.inet.tcp.sack integer yes 254.It net.inet.tcp.sendspace integer yes 255.It net.inet.tcp.slowhz integer no 256.It net.inet.tcp.syn_bucket_limit integer yes 257.It net.inet.tcp.syn_cache_interval integer yes 258.It net.inet.tcp.syn_cache_limit integer yes 259.It net.inet.tcp.timestamps integer yes 260.It net.inet.tcp.win_scale integer yes 261.It net.inet.udp.checksum integer yes 262.It net.inet.udp.recvspace integer yes 263.It net.inet.udp.sendspace integer yes 264.It net.inet6.icmp6.errppslimit integer yes 265.It net.inet6.icmp6.nd6_delay integer yes 266.It net.inet6.icmp6.nd6_maxnudhint integer yes 267.It net.inet6.icmp6.nd6_mmaxtries integer yes 268.It net.inet6.icmp6.nd6_prune integer yes 269.It net.inet6.icmp6.nd6_umaxtries integer yes 270.It net.inet6.icmp6.nd6_useloopback integer yes 271.It net.inet6.icmp6.nodeinfo integer yes 272.It net.inet6.icmp6.rediraccept integer yes 273.It net.inet6.icmp6.redirtimeout integer yes 274.It net.inet6.ip6.accept_rtadv integer yes 275.It net.inet6.ip6.anonportmax integer yes 276.It net.inet6.ip6.anonportmin integer yes 277.It net.inet6.ip6.auto_flowlabel integer yes 278.It net.inet6.ip6.bindv6only integer yes 279.It net.inet6.ip6.dad_count integer yes 280.It net.inet6.ip6.defmcasthlim integer yes 281.It net.inet6.ip6.forwarding integer yes 282.It net.inet6.ip6.gif_hlim integer yes 283.It net.inet6.ip6.hdrnestlimit integer yes 284.It net.inet6.ip6.hlim integer yes 285.It net.inet6.ip6.kame_version string no 286.It net.inet6.ip6.keepfaith integer yes 287.It net.inet6.ip6.log_interval integer yes 288.It net.inet6.ip6.lowportmax integer yes 289.It net.inet6.ip6.lowportmin integer yes 290.It net.inet6.ip6.maxfragpackets integer yes 291.It net.inet6.ip6.redirect integer yes 292.It net.inet6.ip6.rr_prune integer yes 293.It net.inet6.ip6.use_deprecated integer yes 294.It net.inet6.ipsec6.ah_net_deflev integer yes 295.It net.inet6.ipsec6.ah_trans_deflev integer yes 296.It net.inet6.ipsec6.def_policy integer yes 297.It net.inet6.ipsec6.ecn integer yes 298.It net.inet6.ipsec6.esp_net_deflev integer yes 299.It net.inet6.ipsec6.esp_trans_deflev integer yes 300.It net.inet6.ipsec6.inbound_call_ike integer yes 301.It net.inet6.udp6.recvspace integer yes 302.It net.inet6.udp6.sendspace integer yes 303.It net.key.acq_exp_int integer yes 304.It net.key.acq_maxtime integer yes 305.It net.key.debug integer yes 306.It net.key.kill_int integer yes 307.It net.key.random_int integer yes 308.It net.key.spi_max_value integer yes 309.It net.key.spi_min_value integer yes 310.It net.key.spi_try integer yes 311.It proc.<pid>.corename string yes 312.It proc.<pid>.rlimit.coredumpsize.hard integer yes 313.It proc.<pid>.rlimit.coredumpsize.soft integer yes 314.It proc.<pid>.rlimit.cputime.hard integer yes 315.It proc.<pid>.rlimit.cputime.soft integer yes 316.It proc.<pid>.rlimit.datasize.hard integer yes 317.It proc.<pid>.rlimit.datasize.soft integer yes 318.It proc.<pid>.rlimit.filesize.hard integer yes 319.It proc.<pid>.rlimit.filesize.soft integer yes 320.It proc.<pid>.rlimit.maxproc.hard integer yes 321.It proc.<pid>.rlimit.maxproc.soft integer yes 322.It proc.<pid>.rlimit.memorylocked.hard integer yes 323.It proc.<pid>.rlimit.memorylocked.soft integer yes 324.It proc.<pid>.rlimit.memoryuse.hard integer yes 325.It proc.<pid>.rlimit.memoryuse.soft integer yes 326.It proc.<pid>.rlimit.stacksize.hard integer yes 327.It proc.<pid>.rlimit.stacksize.soft integer yes 328.It user.bc_base_max integer no 329.It user.bc_dim_max integer no 330.It user.bc_scale_max integer no 331.It user.bc_string_max integer no 332.It user.coll_weights_max integer no 333.It user.cs_path string no 334.It user.expr_nest_max integer no 335.It user.line_max integer no 336.It user.posix2_c_bind integer no 337.It user.posix2_c_dev integer no 338.It user.posix2_char_term integer no 339.It user.posix2_fort_dev integer no 340.It user.posix2_fort_run integer no 341.It user.posix2_localedef integer no 342.It user.posix2_sw_dev integer no 343.It user.posix2_upe integer no 344.It user.posix2_version integer no 345.It user.re_dup_max integer no 346.It vfs.generic.usermount integer yes 347.It vm.loadavg struct no 348.El 349.Sh EXAMPLES 350.Pp 351For example, to retrieve the maximum number of processes allowed 352in the system, one would use the following request: 353.Bd -literal -offset indent -compact 354sysctl kern.maxproc 355.Ed 356.Pp 357To set the maximum number of processes allowed 358in the system to 1000, one would use the following request: 359.Bd -literal -offset indent -compact 360sysctl -w kern.maxproc=1000 361.Ed 362.Pp 363Information about the system clock rate may be obtained with: 364.Bd -literal -offset indent -compact 365sysctl kern.clockrate 366.Ed 367.Pp 368Information about the load average history may be obtained with: 369.Bd -literal -offset indent -compact 370sysctl vm.loadavg 371.Ed 372.Pp 373To view the values of the per-process variables of the current shell, 374the request: 375.Bd -literal -offset indent -compact 376sysctl proc.$$ 377.Ed 378can be used if the shell interpreter replaces $$ with it's pid (this is true 379for most shells). 380.Pp 381To redirect core dumps to the /var/tmp/<username> directory, 382.Bd -literal -offset indent -compact 383sysctl -w proc.$$.corename=/var/tmp/%u/%n.core 384.Ed 385Shall be used. 386.Bd -literal -offset indent -compact 387sysctl -w proc.curproc.corename=/var/tmp/%u/%n.core 388.Ed 389changes the value for the sysctl process itself, and will not have the desired 390effect. 391 392.Sh FILES 393.Bl -tag -width <netinet6/udp6Xvar.h> -compact 394.It Pa <sys/sysctl.h> 395definitions for top level identifiers, second level kernel and hardware 396identifiers, and user level identifiers 397.It Pa <sys/socket.h> 398definitions for second level network identifiers 399.It Pa <sys/gmon.h> 400definitions for third level profiling identifiers 401.It Pa <uvm/uvm_param.h> 402definitions for second level virtual memory identifiers 403.It Pa <netinet/in.h> 404definitions for third level IPv4/v6 identifiers and 405fourth level IPv4/v6 identifiers 406.It Pa <netinet/icmp_var.h> 407definitions for fourth level ICMP identifiers 408.It Pa <netinet/icmp6.h> 409definitions for fourth level ICMPv6 identifiers 410.It Pa <netinet/tcp_var.h> 411definitions for fourth level TCP identifiers 412.It Pa <netinet/udp_var.h> 413definitions for fourth level UDP identifiers 414.It Pa <netinet6/udp6_var.h> 415definitions for fourth level IPv6 UDP identifiers 416.It Pa <netinet6/ipsec.h> 417definitions for fourth level IPsec identifiers 418.El 419.Sh SEE ALSO 420.Xr sysctl 3 421.Sh HISTORY 422.Nm sysctl 423first appeared in 424.Bx 4.4 . 425