macOS 各版本清理 DNS 缓存命令不同:Ventura+用 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder;Monterey–Big Sur 用 sudo killall -HUP mDNSResponder 和 sudo dscacheutil -flushcache;Catalina–Mojave 仅需 sudo killall -HUP mDNSResponder;High Sierra 及更早需先查进程再选 killall mDNSResponder 或 discoveryd。

如果您在 macOS 系统中修改了 hosts 文件或切换了 DNS 服务器,但网络请求仍未生效,则可能是系统 DNS 缓存未及时更新。以下是适用于不同 macOS 版本的终端清理 DNS 缓存命令及对应操作说明:
一、macOS Ventura(13.x)及后续版本
从 macOS Ventura 开始,Apple 引入了新的网络服务管理机制,传统命令被弃用,需通过 mDNSResponder 服务控制接口执行刷新操作。
1、打开“终端”应用。
2、输入以下命令并按回车执行:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
3、系统会提示输入管理员密码,输入后无可见反馈即表示执行成功。
二、macOS Monterey(12.x)至 macOS Big Sur(11.x)
该区间版本仍支持旧版命令组合,但部分系统已开始限制直接调用 mDNSResponder 进程,推荐使用兼容性更强的双命令结构。
1、启动“终端”。
2、依次执行以下两条命令:sudo killall -HUP mDNSResponder
3、紧接着执行:sudo dscacheutil -flushcache
三、macOS Catalina(10.15)至 macOS Mojave(10.14)
此阶段系统完全依赖 mDNSResponder 作为 DNS 缓存守护进程,killall 命令可直接触发其重启并清空缓存。
1、在“终端”中运行:sudo killall -HUP mDNSResponder
2、无需额外命令,该操作已同步刷新本地 DNS 查询缓存表。
四、macOS High Sierra(10.13)及更早版本(含 Sierra、El Capitan)
早期版本采用独立的 discoveryd 进程管理 DNS 缓存,后因稳定性问题被 mDNSResponder 替代;High Sierra 及之前需根据实际进程状态选择命令。
1、先检查当前运行的 DNS 服务进程:ps aux | grep -E '(mDNS|discovery)'
2、若输出中包含 mDNSResponder,则执行:sudo killall -HUP mDNSResponder
3、若输出中仅显示 discoveryd,则执行:sudo killall -HUP discoveryd










