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).-a
CTLFLAG_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
-i
sysctl
for collecting data from a variety of
machines (not all of which are necessarily running exactly the same
software) easier.-l
-N
option.-N
listsysctls () { 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`/'
-n
set psize=`sysctl -n
hw.pagesize`
-o
-q
sysctl
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.maxproc
To set the maximum number of processes allowed per uid to 1000, one would use the following request:
sysctl
kern.maxprocperuid=1000
Information about the system clock rate may be obtained with:
sysctl kern.clockrate
Information about the load average history may be obtained with:
sysctl vm.loadavg
More 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.
December 24, 2022 | macOS 14.6 |