SYSCTL(8)

名称
sysctl - 在运行时配置内核参数

概述
sysctl [选项 ...] 变量[=值] ...

sysctl -p 文件或正则 ...

描述
sysctl 用于在运行时修改内核参数。可用的参数列在 /proc/sys/ 下。在 Linux 中支持 sysctl 需要 procfs。您可以使用 sysctl 来读取和写入 sysctl 数据。

参数

变量  要读取的键的名称。一个例子是 kernel.ostype。也可以使用 "/" 分隔符来代替 "."。

变量=值
    要设置键，请使用 变量=值 的形式，其中 变量 是键，值 是要设置的值。如果该值包含能被 shell 解析的引号或字符，则可能需要将该值括在双引号中。

-n, --values
    使用此选项可在打印值时不打印键的名称。

-e, --ignore
    使用此选项可以忽略有关未知的键的错误。

-N, --names
    使用此选项仅打印名称。此选项对于具有可编程的自动补全功能的 shell 可能很有用。

-q, --quiet
    使用此选项阻止将已设置的值显示在标准输出。

-w, --write
    强制所有参数为写入参数，如果无法以这种方式解析它们，则输出一个错误。

-p[文件], --load[=文件]
    从指定的文件加载 sysctl 设置，如果没有指定，则加载 /etc/sysctl.conf。指定 - 作为文件名意味着从标准输入读取数据。使用此选项意味着 sysctl 的参数是文件，按照指定的顺序读取。文件参数可以是正则表达式。

-a, --all
    显示当前可用的所有值，但已弃用的参数和禁止使用的参数除外。

--deprecated
    使用 --all 选项列出所有值时，同时包括已弃用的参数。

-b, --binary
    打印值时不打印换行。

--system
    从所有系统配置文件中加载设置。请参阅下面的 系统文件优先级 一节。

-r, --pattern 模式
    仅应用与 模式 匹配的设置。模式 使用扩展正则表达式语法。

-A  -a 的别名

-d  -h 的别名

-f  -p 的别名

-X  -a 的别名

-o  什么也不做，为了保持与 BSD 的兼容性而设立。

-x  什么也不做，为了保持与 BSD 的兼容性而设立。

-h, --help
    显示帮助文本并退出。

-V, --version
    显示版本信息并退出。

文件
/proc/sys
/etc/sysctl.d/*.conf
/run/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf

备注

  系统文件优先级
当使用 --system 选项时，sysctl 将从以下目录按照列表给出的顺序从上到下读取文件。一旦加载了给定文件名的文件，后续目录中的任何同名文件都将被忽略。

/etc/sysctl.d/*.conf
/run/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf

所有配置文件将按字典序排序，无论它们位于哪个目录。配置文件可以被完全替换（通过在更高优先级的目录中放置同名的新配置文件）或部分替换（通过使用排序在更后面的配置文件）。

文件 /etc/sysctl.conf 将最后读取，也就是说它可以替代/覆盖上面列出的目录中的较靠前的文件设置的参数。

  已弃用的参数
base_reachable_time 和 retrans_time 已弃用。sysctl 命令不允许更改这些参数的值。坚持使用已弃用的内核接口的用户应通过其他方式将值推送到 /proc 文件系统。例如：

echo 256 > /proc/sys/net/ipv6/neigh/eth0/base_reachable_time

  禁止使用的参数
一些内核参数不应该被读取，因为会产生副作用。sysctl 的 --all 选项会跳过这些参数。

stat_refresh
    这个参数不返回任何值，但会刷新各个 CPU 的 VM 统计信息。

示例
/sbin/sysctl -a
/sbin/sysctl -n kernel.hostname
/sbin/sysctl -w kernel.domainname="example.com"
/sbin/sysctl -p/etc/sysctl.conf
/sbin/sysctl -a --pattern forward
/sbin/sysctl -a --pattern forward$
/sbin/sysctl -a --pattern 'net.ipv4.conf.(eth|wlan)0.arp'
/sbin/sysctl --pattern '^net.ipv6' --system

参见
proc(5), sysctl.conf(5), regex(7)

报告错误
请将错误报告发送到 procps@freelists.org。