Mac可通过launchd配置系统级定时关机:先创建/usr/local/bin/auto-shutdown.sh脚本并赋执行权限,再编写com.user.shutdown.plist置于/Library/LaunchDaemons,设Hour为23、Minute为0,经sudo chown和sudo launchctl load启用后,无需用户登录即可静默关机。

你想让Mac在每天固定时间点(比如23:00)自动关机,又不希望中途弹窗打断、也不依赖用户是否登录——必须用系统级脚本配合后台调度机制才能真正落地执行。
创建可静默执行的关机Shell脚本
打开“访达” → 前往文件夹 → 输入/usr/local/bin → 回车(如提示无权限,先在终端执行sudo mkdir -p /usr/local/bin并输密码)。
新建文本文档,粘贴以下内容:
#!/bin/bash
echo "$(date): initiating shutdown" >> /var/log/shutdown.log
shutdown -h now
保存为auto-shutdown.sh,拖入/usr/local/bin文件夹中。
回到终端,执行:sudo chmod +x /usr/local/bin/auto-shutdown.sh → 这一步赋予执行权限,【缺少此步,后续所有定时任务都会静默失败】。
用launchd配置精准到分钟的定时任务
在访达中按Cmd+Shift+G,输入/Library/LaunchDaemons → 回车 → 新建文本文件,命名为com.user.shutdown.plist。
填入以下XML内容(将23:00替换为你想要的关机时间,格式为HH:MM):
保存后,在终端执行:sudo chown root:wheel /Library/LaunchDaemons/com.user.shutdown.plist → 必须属主为root,否则系统拒绝加载。
最后启用任务:sudo launchctl load /Library/LaunchDaemons/com.user.shutdown.plist → 此刻已注册进系统守护进程,无需用户登录即可触发。
验证与调试方法
方法一:立即测试是否能执行关机脚本 → 终端运行sudo /usr/local/bin/auto-shutdown.sh,观察是否5秒内黑屏关机(注意提前保存所有工作)。
方法二:检查日志确认调度状态 → 终端输入sudo launchctl list | grep shutdown,若返回一行含com.user.shutdown即表示已加载成功。
方法三:手动触发一次计划任务 → 终端执行sudo launchctl start com.user.shutdown,观察是否立刻写入/var/log/shutdown.log并关机。
如果日志中没有时间戳记录,说明脚本路径错误或权限未生效;如果launchctl list查不到条目,大概率是plist文件名不含.plist后缀或未执行chown命令。


















