| SYSCTL(8) | System Manager's Manual | SYSCTL(8) |
sysctl — get or
set kernel state
sysctl |
[-bdeFhilNnotqWx] [-B
bufsize] [-f
filename]
name[=value[,value]]
... |
sysctl |
[-bdeFhlNnotqWx] [-B
bufsize] -a |
The sysctl utility retrieves kernel state
and allows processes with appropriate privilege to set kernel state. The
state to be retrieved or set is described using a “Management
Information Base” (“MIB”) style name, described as a
dotted set of components.
The following options are available:
-A-o -a (for
compatibility).-aCTLFLAG_SKIP
flag. This option is ignored if one or more variable names are specified
on the command line.-b-B
bufsizesysctl to
bufsize. This is necessary for a
sysctl that has variable length, and the probe
value of 0 is a valid length.-d-e=’. This is useful for producing
output which can be fed back to the sysctl
utility. This option is ignored if either -N or
-n is specified, or a variable is being set.-f
filenamesysctl reads and processes the specified file
first and then processes the name and value pairs in the command line
argument.-F-h-isysctl for collecting data from a variety of
machines (not all of which are necessarily running exactly the same
software) easier.-l-N option.-Nlistsysctls () { set -A reply $(sysctl -AN ${1%.*}) }
compctl -K listsysctls sysctl
To enable completion of variable names in tcsh(1), use:
complete sysctl 'n/*/`sysctl
-Na`/'-nset psize=`sysctl -n
hw.pagesize`-o-qsysctl to
standard error.-t-W-X-x -a (for
compatibility).-x-o, but prints a hex dump of the entire value
instead of just the first few bytes.The information available from sysctl
consists of integers, strings, and opaque types. The
sysctl utility only knows about a couple of opaque
types, and will resort to hexdumps for the rest. The opaque information is
much more useful if retrieved by special purpose programs such as
ps(1),
systat(1), and
netstat(1).
The string and integer information is summarized below. For a detailed description of these variables see sysctl(3).
The changeable column indicates whether a process with appropriate
privilege can change the value. String and integer values can be set using
sysctl.
| Name | Type | Changeable |
| hw.activecpu | integer | no |
| hw.busfrequency | integer | no |
| hw.busfrequency_max | integer | no |
| hw.busfrequency_min | integer | no |
| hw.byteorder | integer | no |
| hw.cacheconfig | struct | no |
| hw.cachelinesize | integer | no |
| hw.cachesize | struct | no |
| hw.cpu64bit_capable | integer | no |
| hw.cpufamily | integer | no |
| hw.cpufrequency | integer | no |
| hw.cpufrequency_max | integer | no |
| hw.cpufrequency_min | integer | no |
| hw.cpusubtype | integer | no |
| hw.cputhreadtype | integer | no |
| hw.cputype | integer | no |
| hw.l1dcachesize | integer | no |
| hw.l1icachesize | integer | no |
| hw.l2cachesize | integer | no |
| hw.l3cachesize | integer | no |
| hw.logicalcpu | integer | no |
| hw.logicalcpu_max | integer | no |
| hw.memsize | integer | no |
| hw.ncpu | integer | no |
| hw.packages | integer | no |
| hw.pagesize | integer | no |
| hw.physicalcpu | integer | no |
| hw.physicalcpu_max | integer | no |
| hw.tbfrequency | integer | no |
| kern.argmax | integer | no |
| kern.bootargs | string | no |
| kern.boottime | struct | no |
| kern.clockrate | struct | no |
| kern.coredump | integer | yes |
| kern.corefile | string | yes |
| kern.flush_cache_on_write | integer | yes |
| kern.hostid | integer | yes |
| kern.hostname | string | yes |
| kern.job_control | integer | no |
| kern.maxfiles | integer | yes |
| kern.maxfilesperproc | integer | yes |
| kern.maxnbuf | integer | yes |
| kern.maxproc | integer | yes |
| kern.maxprocperuid | integer | yes |
| kern.maxvnodes | integer | yes |
| kern.msgbuf | integer | yes |
| kern.nbuf | integer | no |
| kern.netboot | integer | no |
| kern.ngroups | integer | no |
| kern.nisdomainname | string | yes |
| kern.num_files | integer | no |
| kern.num_tasks | integer | no |
| kern.num_taskthreads | integer | no |
| kern.num_threads | integer | no |
| kern.num_vnodes | integer | no |
| kern.nx | integer | yes |
| kern.osrelease | string | no |
| kern.osrevision | integer | no |
| kern.ostype | string | no |
| kern.osversion | string | yes |
| kern.posix1version | integer | no |
| kern.procname | string | yes |
| kern.safeboot | integer | no |
| kern.saved_ids | integer | no |
| kern.secure_kernel | integer | no |
| kern.securelevel | integer | yes |
| kern.singleuser | integer | no |
| kern.sleeptime | struct | no |
| kern.slide | integer | no |
| kern.stack_depth_max | integer | no |
| kern.stack_size | integer | no |
| kern.sugid_coredump | integer | yes |
| kern.sugid_scripts | integer | yes |
| kern.symfile | string | no |
| kern.usrstack | integer | no |
| kern.usrstack64 | integer | no |
| kern.uuid | string | no |
| kern.version | string | no |
| kern.waketime | struct | no |
| machdep.cpu.address_bits.physical | integer | no |
| machdep.cpu.address_bits.virtual | integer | no |
| machdep.cpu.brand | integer | no |
| machdep.cpu.brand_string | string | no |
| machdep.cpu.cache.L2_associativity | integer | no |
| machdep.cpu.cache.linesize | integer | no |
| machdep.cpu.cache.size | integer | no |
| machdep.cpu.core_count | integer | no |
| machdep.cpu.cores_per_package | integer | no |
| machdep.cpu.extfamily | integer | no |
| machdep.cpu.extfeature_bits | integer | no |
| machdep.cpu.extfeatures | string | no |
| machdep.cpu.extmodel | integer | no |
| machdep.cpu.family | integer | no |
| machdep.cpu.feature_bits | integer | no |
| machdep.cpu.features | string | no |
| machdep.cpu.leaf7_feature_bits | integer | no |
| machdep.cpu.leaf7_features | string | no |
| machdep.cpu.logical_per_package | integer | no |
| machdep.cpu.max_basic | integer | no |
| machdep.cpu.max_ext | integer | no |
| machdep.cpu.microcode_version | integer | no |
| machdep.cpu.model | integer | no |
| machdep.cpu.processor_flag | integer | no |
| machdep.cpu.signature | integer | no |
| machdep.cpu.stepping | integer | no |
| machdep.cpu.thread_count | integer | no |
| machdep.cpu.tlb.data.large | integer | no |
| machdep.cpu.tlb.data.large_level1 | integer | no |
| machdep.cpu.tlb.data.small | integer | no |
| machdep.cpu.tlb.data.small_level1 | integer | no |
| machdep.cpu.tlb.inst.large | integer | no |
| machdep.cpu.tlb.inst.small | integer | no |
| machdep.cpu.tlb.shared | integer | no |
| machdep.cpu.ucupdate | integer | yes |
| machdep.cpu.vendor | string | no |
| machdep.cpu.xsave.extended_state | integer | no |
| machdep.tsc.deep_idle_rebase | integer | yes |
| machdep.tsc.frequency | integer | no |
| machdep.tsc.nanotime.generation | integer | no |
| machdep.tsc.nanotime.shift | integer | no |
| net.inet.ip.forwarding | integer | yes |
| net.inet.ip.portrange.first | integer | yes |
| net.inet.ip.portrange.hifirst | integer | yes |
| net.inet.ip.portrange.hilast | integer | yes |
| net.inet.ip.portrange.last | integer | yes |
| net.inet.ip.portrange.lowfirst | integer | yes |
| net.inet.ip.portrange.lowlast | integer | yes |
| net.inet.ip.redirect | integer | yes |
| net.inet.ip.ttl | integer | yes |
| net.inet.udp.checksum | integer | yes |
| net.inet.udp.maxdgram | integer | yes |
| vm.loadavg | struct | no |
| vm.swapusage | struct | no |
| user.bc_base_max | integer | no |
| user.bc_dim_max | integer | no |
| user.bc_scale_max | integer | no |
| user.bc_string_max | integer | no |
| user.coll_weights_max | integer | no |
| user.cs_path | string | no |
| user.expr_nest_max | integer | no |
| user.line_max | integer | no |
| user.posix2_c_bind | integer | no |
| user.posix2_c_dev | integer | no |
| user.posix2_char_term | integer | no |
| user.posix2_fort_dev | integer | no |
| user.posix2_fort_run | integer | no |
| user.posix2_localedef | integer | no |
| user.posix2_sw_dev | integer | no |
| user.posix2_upe | integer | no |
| user.posix2_version | integer | no |
| user.re_dup_max | integer | no |
| user.stream_max | integer | no |
| user.tzname_max | integer | no |
Note that the hw.ncpu attribute is deprecated, and one of the more specific MIBs, hw.logicalcpu, hw.logicalcpu_max, hw.physicalcpu, or hw.physicalcpu_max, should be used instead.
<sys/sysctl.h><sys/socket.h><sys/gmon.h><vm/vm_param.h><netinet/in.h><netinet/icmp_var.h><netinet/udp_var.h>The sysctl utility exits 0 on
success, and >0 if an error occurs.
For example, to retrieve the maximum number of processes allowed in the system, one would use the following request:
sysctl kern.maxprocTo set the maximum number of processes allowed per uid to 1000, one would use the following request:
sysctl
kern.maxprocperuid=1000Information about the system clock rate may be obtained with:
sysctl kern.clockrateInformation about the load average history may be obtained with:
sysctl vm.loadavgMore variables than these exist, and the best and likely only place to search for their deeper meaning is undoubtedly the source where they are defined.
The -w option has been deprecated and is
silently ignored.
A sysctl utility first appeared in
4.4BSD.
In FreeBSD 2.2,
sysctl was significantly remodeled.
| August 18, 2023 | macOS 15.6 |