sysctl.8
SYSCTL(8)
SYSCTL(8)
FreeBSD System Manager's Manual
SYSCTL(8)
sysctl
—
获取或设置内核状态
sysctl
[-bdehiNnoTtqWx
] [-B
bufsize] [-f
filename] name[=value[,value]] ... sysctl
[-bdehNnoTtqWx
] [-B
bufsize] -a
sysctl
实用程序检索内核状态并允许具有适当权限的进程设置内核状态。 要检索或设置的状态使用 “管理信息库” (“MIB”) 样式名称来描述,描述为组件的虚线集。
可以使用以下选项:
等效于 -o
-a
(为了兼容性)。
列出所有当前可用的非透明值。 如果在命令行上指定了一个或多个变量名称,则忽略此选项。
强制以原始二进制格式输出变量的值。 不打印名称,也不输出终止换行符。 这对于单个变量最有用。
-B
bufsize
将要从 sysctl
读取的缓冲区大小设置为 bufsize 。 这对于具有可变长度的 sysctl
是必需的,并且探测值 0 是有效长度,例如 kern.arandom 。
打印变量的描述而不是其值。
用 ‘=
’ 分隔变量的名称和值。 这对于生成可以反馈给 sysctl
实用程序的输出很有用。 如果指定了 -N
或 -n
,或者正在设置变量,则忽略此选项。
-f
filename
指定每行包含一对名称和值的文件。 sysctl
首先读取并处理指定的文件,然后处理命令行参数中的名称和值对。
为人类而非机器的可读性格式化输出。
忽略未知的 OID。 目的是利用 sysctl
从各种机器(并非所有机器都必须运行完全相同的软件)更容易收集数据。
只显示变量名,而不是它们的值。 这对于提供可编程完成的 shell 特别有用。 要在 zsh(1) (ports/shells/zsh) 中启用变量名的补全,请使用以下代码:
listsysctls () { set -A reply $(sysctl -AN ${1%.*}) } compctl -K listsysctls sysctl
要在 tcsh(1) 中启用变量名的补全,请使用:
complete sysctl 'n/*/`sysctl -Na`/'
不显示变量名。 此选项对于设置 shell 变量很有用。 例如,要将页面大小保存在变量 psize 中,请使用:
set psize=`sysctl -n hw.pagesize`
显示不透明变量(通常被抑制)。 打印格式和长度,以及值的前 16 个字节的十六进制转储。
将 sysctl
生成的一些警告抑制为标准错误。
仅显示可通过加载程序 (CTLFLAG_TUN) 设置的变量。
打印变量的类型。
仅显示非统计的可写变量。 对于确定一组运行时可调 sysctl 很有用。
等效于 -x
-a
(为了兼容性)。
与 -o
一样,但打印整个值的十六进制转储,而不仅仅是前几个字节。
sysctl
提供的信息包括整数、字符串和不透明类型。 sysctl
实用程序只知道几个不透明类型,其余的将求助于 hexdump。 如果由 ps(1), systat(1) 和 netstat(1) 等特殊用途的程序检索,不透明信息会更加有用。
一些在正常系统操作期间无法修改的变量可以通过 loader(8) 可调参数进行初始化。 例如,这可以通过在 loader.conf(5) 中设置它们来完成。 请参阅 loader.conf(5) 以获取有关哪些可调参数可用以及如何设置它们的更多信息。
字符串和整数信息总结如下。 有关这些变量的详细说明,请参见 sysctl(3) 。
可更改的列指示具有适当权限的进程是否可以更改该值。 可以使用 sysctl
设置字符串和整数值。
Name
Type
Changeable
kern.ostype
string
no
kern.osrelease
string
no
kern.osrevision
integer
no
kern.version
string
no
kern.maxvnodes
integer
yes
kern.maxproc
integer
no
kern.maxprocperuid
integer
yes
kern.maxfiles
integer
yes
kern.maxfilesperproc
integer
yes
kern.argmax
integer
no
kern.securelevel
integer
raise only
kern.hostname
string
yes
kern.hostid
integer
yes
kern.clockrate
struct
no
kern.posix1version
integer
no
kern.ngroups
integer
no
kern.job_control
integer
no
kern.saved_ids
integer
no
kern.boottime
struct
no
kern.domainname
string
yes
kern.filedelay
integer
yes
kern.dirdelay
integer
yes
kern.metadelay
integer
yes
kern.osreldate
integer
no
kern.bootfile
string
yes
kern.corefile
string
yes
kern.logsigexit
integer
yes
security.bsd.suser_enabled
integer
yes
security.bsd.see_other_uids
integer
yes
security.bsd.unprivileged_proc_debug
integer
yes
security.bsd.unprivileged_read_msgbuf
integer
yes
vm.loadavg
struct
no
hw.machine
string
no
hw.model
string
no
hw.ncpu
integer
no
hw.byteorder
integer
no
hw.physmem
integer
no
hw.usermem
integer
no
hw.pagesize
integer
no
hw.floatingpoint
integer
no
hw.machine_arch
string
no
hw.realmem
integer
no
machdep.adjkerntz
integer
yes
machdep.disable_rtc_set
integer
yes
machdep.guessed_bootdev
string
no
user.cs_path
string
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.expr_nest_max
integer
no
user.line_max
integer
no
user.re_dup_max
integer
no
user.posix2_version
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.stream_max
integer
no
user.tzname_max
integer
no
user.localbase
string
no
<sys/sysctl.h>
顶级标识符、二级内核和硬件标识符以及用户级标识符的定义
<sys/socket.h>
二级网络标识符的定义
<sys/gmon.h>
第三级分析标识符的定义
<vm/vm_param.h>
二级虚拟内存标识符的定义
<netinet/in.h>
三级互联网标识符和四级 IP 标识符的定义
<netinet/icmp_var.h>
第四级 ICMP 标识符的定义
<netinet/udp_var.h>
第四级 UDP 标识符的定义
The sysctl
utility exits 0 on success, and >0 if an error occurs.
例如,要检索系统中允许的最大进程数,可以使用以下请求:
sysctl kern.maxproc
要将每个 uid 允许的最大进程数设置为 1000,可以使用以下请求:
sysctl kern.maxprocperuid=1000
可以通过以下方式获得有关系统时钟速率的信息:
sysctl kern.clockrate
有关负载平均历史的信息可以通过以下方式获得:
sysctl vm.loadavg
存在比这些更多的变量,而寻找其更深层含义的最佳且可能唯一的地方无疑是定义它们的来源。
-w
选项已被弃用,并被默默地忽略。
sysctl(3), loader.conf(5), sysctl.conf(5), loader(8)
sysctl
实用程序首先出现在 4.4BSD 中。
在 FreeBSD 2.2 中, sysctl
进行了重大改造。
sysctl
实用程序目前利用内核 sysctl 工具的未记录接口来遍历 sysctl 树并检索格式和名称信息。 目前正在考虑这个正确的接口。
October 30, 2020
FreeBSD 13.1-RELEASE
最后更新于