mac无法通过系统设置实现断网自动关机,但可用三种方法:①快捷指令监听wi-fi断开后执行applescript关机;②终端脚本每10秒ping检测全网断开后强制关机;③快捷指令+网络判断+弹窗确认关机。

你想让Mac在检测到Wi-Fi或以太网断开连接后立刻关机,防止离线状态下后台程序持续运行耗电、发热或泄露本地数据——这无法通过系统设置直接实现,但可借助快捷指令+AppleScript组合触发,且必须手动授权网络状态读取权限。
用快捷指令监听Wi-Fi断开并关机
该方法仅监控Wi-Fi连接状态,适合主要依赖无线网络的笔记本用户。它不检查以太网,也不验证是否真“无网络”,只看系统是否已断开当前Wi-Fi。
打开“快捷指令”App → 切换到“自动化”标签页 → 点击右上角“+” → 选择“创建个人自动化”。
搜索并选择“Wi-Fi” → 点击“已关闭” → 点击“下一步”。
点击“添加操作” → 搜索“运行 AppleScript” → 选择后,在脚本框中粘贴以下内容:
osascript -e 'tell app "System Events" to shut down'
关闭“运行前询问” → 点击“完成”。首次启用时,系统会弹出权限请求,需在“系统设置 > 隐私与安全性 > 自动化 > 快捷指令”中勾选“网络”和“系统信息”两项授权,【缺一不可,否则脚本无法获取Wi-Fi状态或执行关机】。
用终端脚本检测任意网络断开并关机
此方法更底层,能识别Wi-Fi和以太网同时消失的真实“无网络”状态,但需手动部署为后台服务,且每次重启后需重新启用。
第一步:打开“终端”,输入以下命令创建检测脚本:
sudo nano /usr/local/bin/check-network-shutdown.sh
第二步:在nano编辑器中粘贴以下内容(按Control+O保存,回车确认;Control+X退出):
#!/bin/bash
while true; do
if ! ping -c 1 1.1.1.1 &>/dev/null; then
shutdown -h now
fi
sleep 10
done
第三步:赋予执行权限:
sudo chmod +x /usr/local/bin/check-network-shutdown.sh
第四步:启动脚本作为后台进程:
nohup sudo /usr/local/bin/check-network-shutdown.sh > /dev/null 2>&1 &
这个脚本每10秒尝试ping一次公共DNS,一旦连续失败就立即关机。它不会自动开机唤醒,也不会等待文档保存提示——【执行即断电,务必确保所有工作已保存】。
用快捷指令+网络条件组合实现带提醒的关机
如果你担心误关机,想在断网后先弹窗确认再执行,这个方案最稳妥,但要求你始终登录且Mac未休眠。
方法一:新建快捷指令,命名为“断网确认关机”。
添加操作:“获取网络信息” → 添加操作:“如果” → 条件设为“网络连接”等于“否”。
方法二:在“如果”分支内添加“显示提醒”,标题写“网络已断开”,正文写“是否立即关机?”,按钮设为“是”和“否”。
方法三:点击“是”按钮后,接“运行 AppleScript”,脚本同上:
osascript -e 'tell app "System Events" to shut down'
把这个快捷指令保存后,你可以手动运行它,也可以把它绑定到菜单栏——点击右上角快捷指令图标 → “在菜单栏中显示” → 下次断网时点一下就能触发确认流程。










