mac无法用系统自带节能设置实现空闲一小时自动关机,需通过终端命令sudo shutdown -h +60或launchd配合python脚本检测空闲时间并触发关机。

你想让Mac在你离开座位一小时后自动关机,避免长时间闲置耗电或产生安全风险,这个需求不能靠系统自带的“节能”定时功能实现——它只支持固定时间点触发,不响应空闲状态。必须用终端命令配合系统守护机制来达成。
用pmset设置空闲一小时后关机
打开“访达” → “前往” → “实用工具” → 双击“终端”。
输入以下命令并回车:sudo pmset sleep 60。这会让Mac在无操作60分钟后进入睡眠,但不是关机——别急,下一步才是关键。
执行:sudo pmset powerbutton 0,禁用电源键唤醒,防止误触中断流程。
最关键的一步:运行 sudo pmset autorestart 1 并不适用;真正起作用的是组合策略——先设睡眠,再用caffeinate -u -t 3600反向锁定,但此路不通。正确路径是:直接执行 sudo pmset schedule shutdown "mm/dd/yyyy HH:MM:SS" 无法满足“空闲触发”。所以必须换方案。
用launchd创建空闲检测关机任务
这需要写一个检测脚本并注册为后台服务。先创建脚本文件:
在终端中执行:mkdir -p ~/Library/LaunchAgents。
执行:touch ~/Library/LaunchAgents/local.idle-shutdown.plist,然后用文本编辑器打开它(如:open -e ~/Library/LaunchAgents/local.idle-shutdown.plist)。
粘贴以下内容(注意把YOUR_USERNAME替换成你当前登录用户名):
保存文件后,在终端运行:chmod 644 ~/Library/LaunchAgents/local.idle-shutdown.plist。
加载服务:launchctl load ~/Library/LaunchAgents/local.idle-shutdown.plist。服务立即生效,每5分钟检查一次空闲时间,超过3600秒(1小时)即执行关机。
最简方案:用shutdown命令配合手动触发
方法一:终端一次性执行
打开终端,输入:sudo shutdown -h +60。系统会提示输入管理员密码;输入时屏幕不显示字符,这是正常的安全机制,准确输入后按回车即可。
命令执行成功后,终端会显示类似“Shutdown scheduled for Thu Aug 20 01:06:22 2026”的确认信息——这表示关机任务已注册进系统init进程,即使你关闭终端或退出登录,关机仍会准时执行。
方法二:快捷指令一键触发(推荐日常使用)
打开“快捷指令”App → 点右上角“+” → 选择“自动化” → 点“创建个人自动化” → 选“运行快捷指令” → 点“下一步”。
点“添加操作” → 搜索“运行Shell脚本” → 选择它 → 在脚本框中粘贴:sudo shutdown -h +60 → 点右上角“下一个”。
【首次运行时必须前往“系统设置 → 隐私与安全性 → 自动化 → 快捷指令”中开启对应权限,否则脚本无法调用sudo】
关闭顶部“运行前询问”,点击“完成”保存。











