sysctl -a 显示当前内核实际生效的所有参数值,按字母序排列,反映默认值、持久化加载值及临时修改结果;它直接读取 /proc/sys/ 内存值,而非配置文件内容。

直接运行 sysctl -a 即可列出当前系统中所有可读写的内核参数及其值。
查看全部参数的基本操作
在终端中执行:
-
sysctl -a—— 输出全部参数,按字母顺序排列,每行格式为参数名 = 当前值 - 输出量通常很大(数百至千行),建议配合分页工具:
sysctl -a | less或sysctl -a | grep 'net.ipv4'过滤关键词 - 部分参数名含特殊字符或空格时,sysctl 会自动转义显示,但不影响含义
注意输出的实际含义
-a 显示的是运行时生效值,不是配置文件里的“待加载值”。它反映的是当前内核真实状态,包括:
- 内核默认初始值
- 启动时由
sysctl --system加载的持久化配置 - 后续用
sysctl -w或echo写入/proc/sys/的临时修改
也就是说,sysctl -a 看到的是“此刻真正起作用的参数”,而非“将来可能生效的设置”。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
快速定位常用参数的小技巧
不必硬记完整路径,可用通配符或关键词缩小范围:
-
sysctl net.ipv4.—— 自动补全并列出所有以net.ipv4.开头的参数(Bash/Zsh 支持) -
sysctl kernel. | head -10—— 查看 kernel 类前 10 个参数 -
sysctl -a 2>/dev/null | wc -l—— 统计总参数数量(忽略权限拒绝提示)
和配置文件的区别要分清
别把 sysctl -a 和 cat /etc/sysctl.conf 混为一谈:
-
/etc/sysctl.conf或/etc/sysctl.d/*.conf是文本配置,只影响“下次加载后”的行为 -
sysctl -a不读这些文件,它直接从/proc/sys/实时读取内核内存中的值 - 刚改完配置文件但没执行
sysctl --system,sysctl -a仍显示旧值










