SYSCTL(8) System Manager's Manual SYSCTL(8)

# 名称

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

# 概述

**sysctl** \[*选项* ...] *变量*\[**=值**] ...

**sysctl -p** *文件或正则* ...

# 描述

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

# 参数

*变量*

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

*变量*=*值*

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

[**-n**, **--values**](#n)

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

[**-e**, **--ignore**](#e)

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

[**-N**, **--names**](#N)

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

[**-q**, **--quiet**](#q)

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

[**-w**, **--write**](#w)

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

[**-p**\[*文件*\], **--load**\[=*文件*\]](#p)

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

[**-a**, **--all**](#a)

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

[**--deprecated**](#deprecated)

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

[**-b**, **--binary**](#b)

打印值时不打印换行。

[**--system**](#system)

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

[**-r**, **--pattern** *模式*](#r)

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

[**-A**](#A)

**-a** 的别名

[**-d**](#d)

**-h** 的别名

[**-f**](#f)

**-p** 的别名

[**-X**](#X)

**-a** 的别名

[**-o**](#o)

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

[**-x**](#x)

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

[**-h**, **--help**](#h)

显示帮助文本并退出。

[**-V**, **--version**](#V)

显示版本信息并退出。

# 文件

*/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 &gt; /proc/sys/net/ipv6/neigh/eth0/base\_reachable\_time

## 禁止使用的参数

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

[**stat\_refresh**](#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)](/man/os/procps/proc.5), [**sysctl.conf**(5)](/man/os/procps/sysctl.conf.5), [**regex**(7)](/man/os/procps/regex.7)

# 报告错误

请将错误报告发送到 [procps@freelists.org](mailto:procps@freelists.org)。

2024-07-19 procps-ng

---

Document: sysctl(8) from procps 4.0.7-r1 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.7.tar.xz
