系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

sysctl

读取和临时修改 Darwin 内核参数,查看 CPU、内存与网络栈配置。

补充说明

sysctl 按 MIB 名称读写内核变量:hw.* 是硬件能力,kern.* 是内核限制,net.* 是网络参数,machdep.* 是平台相关项。-a 列出全部,-n 只输出值,-w 写入。Apple Silicon 上不少 hw.*、machdep.* 项不提供或只读,读不到不代表系统异常。

边界:-w 只改运行时值,重启即失效;/etc/sysctl.conf 在旧版 macOS 上生效,新版并不保证,长期修改建议用 LaunchDaemon 执行 sysctl -w 并在启动后验证。SIP 和内核限制会让部分写入返回 Operation not permitted,不要反复重试。

常用示例

# 1. 读取逻辑 CPU 数和物理内存(字节)
% sysctl -n hw.ncpu hw.memsize
% sysctl -n hw.physicalcpu hw.logicalcpu

# 2. 判断是否为 Apple Silicon:1 表示是,0 表示 Intel
% sysctl -n hw.optional.arm64

# 3. 查看文件描述符和进程数上限
% sysctl kern.maxfiles kern.maxfilesperproc kern.maxproc

# 4. 临时提高文件描述符上限,重启后失效
% sudo sysctl -w kern.maxfiles=65536
% sysctl kern.maxfiles

# 5. 对比产品版本、构建号和本次启动时间
% sysctl -n kern.osproductversion kern.osversion kern.boottime

# 6. 查看 TCP 发送/接收缓冲区
% sysctl net.inet.tcp.sendspace net.inet.tcp.recvspace

# 7. 批量筛选网络参数
% sysctl -a 2>/dev/null | grep '^net.inet.tcp' | head -20

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. sysctl -w 修改的参数重启后还在吗?要持久化该怎么做?
  2. 为什么在 Apple Silicon 上读不到某些 machdep.* 字段?这是故障吗?
  3. 判断当前 Mac 是不是 Apple Silicon,用哪条命令最直接?
答案
  1. 不在了,-w 只改运行时;用 LaunchDaemon 在启动时执行 sysctl -w,并验证结果。
  2. 不是故障;Apple Silicon 不暴露部分 Intel 专用字段,芯片信息改用 system_profiler SPHardwareDataType。
  3. sysctl -n hw.optional.arm64,返回 1 是 Apple Silicon,返回 0 或不存在是 Intel。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令