在 macOS 终端中关闭 Wi-Fi 必须用 sudo networksetup -setairportpower "Wi-Fi" off(服务名需与 networksetup -listallnetworkservices 输出完全一致),仅 ifconfig en0 down 无效,因系统会自动恢复、菜单栏图标不更新、DHCP 和 DNS 缓存仍生效。

在 macOS 终端中关闭特定网络服务(如 Wi-Fi),必须使用系统级服务管理命令,不能只停物理接口;直接对 en0/en1 执行 ifconfig down 会被系统自动恢复,且菜单栏图标不更新、DHCP 租约不清除、DNS 缓存仍有效——这些都会导致“看似关了,实则还在后台尝试重连”。
确认 Wi-Fi 对应的服务名与设备名
先运行:networksetup -listallhardwareports,在输出中找到标注为 AirPort 或 Wi-Fi 的条目,记下其 Device 名(常见为 en1 或 en2,M 系列 Mac 上 en0 多为 Thunderbolt 有线口,【切勿凭经验硬写 en0】)。
再运行:networksetup -listallnetworkservices,找出服务列表中确切显示为 Wi-Fi 的那一行(注意大小写和空格,部分系统可能显示为 AirPort)。
用 networksetup 彻底关停 Wi-Fi 服务
执行命令:sudo networksetup -setairportpower "Wi-Fi" off(引号内必须与上一步查到的**服务名完全一致**)。
这一步会同步触发:菜单栏图标变灰、NetworkPreferences.plist 更新、DHCP 客户端终止、ARP 表清空、configd 进程收到禁用通知。若服务名写错(比如写成 WiFi 或 airport),命令静默失败,Wi-Fi 依然在线。
开启只需把 off 换成 on,无需重启或额外清理。
禁用以太网或 Thunderbolt 有线服务
方法一:仅关闭服务(推荐优先试此)sudo networksetup -setnetworkserviceenabled "Ethernet" off(服务名需替换为实际名称,如 “Thunderbolt Ethernet”、“USB 10/100/1000 LAN” 等)
方法二:服务 + 接口双关(确保底层链路断开)
第一步:关服务 → sudo networksetup -setnetworkserviceenabled "Ethernet" off
第二步:关接口 → sudo ifconfig en0 down(en0 替换为 【listallhardwareports 中查到的真实 Device 名】)
注意:ifconfig down 是临时操作,重启即失效;若需永久禁用,须配合 launchd 配置或移除对应服务。
验证是否真正关闭
检查三项状态缺一不可:
① 运行 ifconfig enX | grep "status:"(X 替换为设备号),返回 status: inactive 才算链路层断开;
② 运行 ipconfig getifaddr enX,无任何输出才说明 IP 已释放;
③ 点击菜单栏 Wi-Fi 图标,应显示“Wi-Fi 已关闭”,且无法点开已保存网络列表。

















