Get or set kernel state.

      sysctl [-bdehiNnoqx] name[=value] ...

      sysctl [-bdehNnoqx] -a


     -A      Equivalent to -o -a (for compatibility).

     -a      List all the currently available non-opaque values.  This option
             is ignored if one or more variable names are specified on the
             command line.

     -b      Force the value of the variable(s) to be output in raw, binary format.
             No names are printed and no terminating newlines are output.
             This is mostly useful with a single variable.

     -d      Print the description of the variable instead of its value.

     -e      Separate the name and the value of the variable(s) with =.
             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.

     -h      Format output for human, rather than machine, readability.

     -i      Ignore unknown OIDs.  The purpose is to make use of sysctl for
             collecting data from a variety of machines (not all of which are
             necessarily running exactly the same software) easier.

     -N      Show only variable names, not their values.  This is particularly
             useful with shells that offer programmable completion.  To enable
             completion of variable names in zsh(1) (ports/shells/zsh), use
             the following code:

                   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      Show only variable values, not their names.
             This option is useful for setting shell variables. 
             For instance, to save the pagesize in variable psize, use:

                   set psize=`sysctl -n hw.pagesize`

     -o      Show opaque variables (which are normally suppressed).  The format and length
             are printed, as well as a hex dump of the first sixteen bytes of the value.

     -q      Suppress some warnings generated by sysctl to standard error.

     -X      Equivalent to -x -a (for compatibility).

     -x      As -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 variable 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                          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                  integer       no           integer       no                  integer       no           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

     <sys/sysctl.h>        Definitions for top level identifiers, second level
                           kernel and hardware identifiers, and user level identifiers.
     <sys/socket.h>        Definitions for second level network identifiers.
     <sys/gmon.h>          Definitions for third level profiling identifiers.
     <vm/vm_param.h>       Definitions for second level virtual memory identifiers.
     <netinet/in.h>        Definitions for third level Internet identifiers
                           and fourth level IP identifiers.
     <netinet/icmp_var.h>  Definitions for fourth level ICMP identifiers.
     <netinet/udp_var.h>   Definitions for fourth level UDP identifiers.


Retrieve the maximum number of processes allowed in the system:

sysctl kern.maxproc

or showing only the value:

sysctl -n kern.maxproc

Set the maximum number of processes allowed per uid to 1000:

sysctl kern.maxprocperuid=1000

Show Information about the system clock rate:

sysctl kern.clockrate

Show Information about the load average history:

sysctl vm.loadavg

Show the system memory management/swap mode (default=4):

sysctl vm.compressor_mode

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 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.

“There are many reasons why novelists write, but they all have one thing in common - a need to create an alternative world” ~ John Fowles

Related macOS commands

launchctl - Load or unload daemons/agents.
nvram - Manipulate firmware variables.
shopt - Set shell options.
sysctl.conf(5) - kernel state defaults
env - Display, set, or remove environment variables.

Copyright © 1999-2024
Some rights reserved