mac原生支持闲置30分钟自动关机:推荐用pmset命令组合(sudo pmset -a sleep 30; powernap 0; disablesleep 1),仅限sonoma 14.5+及sequoia 15.0+稳定生效;旧系统可用快捷指令+applescript调用ioreg读取内核级idletime实现精准判断。

你想让Mac在系统闲置30分钟后自动关机,比如离开工位去开会、吃午饭或临时处理其他事务时避免设备长时间空转耗电,系统原生支持该功能但隐藏较深,无需安装任何第三方工具。
用系统设置启用闲置超时关机
这一步适用于所有macOS版本(Ventura及更新系统),但路径已从旧版「系统偏好设置→节能器/电池→定时」迁移至新版系统设置结构。
点击左上角苹果图标 →「系统设置」→ 左侧选择「电池」(MacBook)或「节能器」(iMac/Mac mini)。
向右滚动到底部,找到并点击「定时…」按钮——注意不是「低电量模式」或「优化电池充电」区域。
勾选「设定以下日期的睡眠或关机」→ 在右侧下拉菜单中选择「关机」→ 输入时间(例如当前是17:04,就输17:34)→ 下方重复周期选「仅一次」。
⚠️ 这个方案本质是“绝对时间关机”,【无法真正响应“闲置30分钟”这一动态条件】,它只按你填入的固定时刻执行,若你中途操作电脑,它仍会在17:34准时关机,存在误关风险。
用pmset命令实现真·闲置触发关机
macOS底层电源管理工具pmset支持基于系统空闲状态(idle)的关机策略,这才是符合“闲置30分钟后关机”的原生方案。
打开「访达 → 应用程序 → 实用工具 → 终端」。
输入命令:sudo pmset -a sleep 30 → 回车后输入管理员密码(屏幕不显示字符,输完直接回车)。
这条命令将系统睡眠阈值设为30分钟闲置,但默认是进入睡眠而非关机;要改为关机,需配合后续动作。
接着输入:sudo pmset -a powernap 0 → 关闭“电能小憩”,防止后台唤醒干扰关机逻辑。
最关键的一步:执行 sudo pmset -a disablesleep 1 → 强制禁用睡眠,使系统在闲置30分钟后跳过睡眠阶段,直接触发关机流程。
⚠️ 注意:【此组合仅在macOS Sonoma 14.5+ 和 Sequoia 15.0+ 中稳定生效】,旧版本可能忽略disablesleep参数而仅睡眠。
用快捷指令+AppleScript模拟闲置关机
当pmset不可靠或你使用较老系统时,可用快捷指令监听用户活动状态并主动关机。
方法一:基于时间差判断
打开「快捷指令」App →「自动化」标签页 →「+」→「创建个人自动化」→ 选择「运行快捷指令」→ 点击「添加操作」→ 搜索「获取当前日期与时间」→ 再加一个「变量」→「设置变量」→ 将时间存为「last_active」。
再新建一个自动化:「创建个人自动化」→「特定时间」→ 设为每分钟触发一次 →「添加操作」→「运行 AppleScript」→ 粘贴以下脚本:
set lastTime to (do shell script "defaults read com.apple.loginwindow IdleTime 2>/dev/null || echo 0") as integer
if lastTime > 1800 then
do shell script "osascript -e 'tell app \"System Events\" to shut down'"
end if
关闭「运行前询问」→「完成」。
方法二:依赖系统API(更准)
在同个AppleScript框中替换为:do shell script "if [[ $(ioreg -c IOHIDSystem | sed -n 's/.*\"IdleTime\" = //p') -gt 1800000000 ]]; then osascript -e 'tell app \"System Events\" to shut down'; fi"。
该脚本直接读取IOHIDSystem内核级空闲毫秒数,1800000000 = 30分钟 × 1000000,精度远高于前台应用检测。











