Mac每日23:00静默关机需用pmset配合日志屏蔽:先禁用shutdown子系统日志,再设定时关机,或用sudo shutdown -h now跳过日志管道,亦可借快捷指令实现带通知的静默关机。

你想让Mac每天23:00自动关机,又不希望系统在控制台里留下shutdown日志条目——这能减少诊断信息干扰,但要注意:macOS默认会记录关机事件到system.log和asl数据库,完全隐藏需绕过原生关机路径。
用pmset命令定时关机并禁用日志写入
这是唯一能真正抑制关机日志生成的方式,因为pmset由底层powerd守护进程直接调度,不经过loginwindow或launchd的常规日志管道。但必须配合系统级日志配置调整,否则仍会在/var/log/system.log中留下“Shutdown started”痕迹。
第一步:关闭系统日志对关机事件的捕获 → 打开“终端”,执行:
sudo log config --mode "level:off" --subsystem com.apple.system.shutdown
第二步:清除当前已启用的日志规则 → 输入:
sudo log config --mode "level:default" --subsystem com.apple.system.shutdown
第三步:设置每日23:00关机 → 运行:
sudo pmset repeat shutdown MTWRFSU 23:00:00
第四步:验证日志屏蔽是否生效 → 执行:
log show --predicate 'subsystem == "com.apple.system.shutdown"' --last 1h
若无任何输出,说明屏蔽成功;若有内容,说明上一步未执行或权限不足。注意:该命令仅影响shutdown子系统日志,不影响内核panic或电源异常日志。
通过AppleScript调用shutdown -h now(无日志但无保存提示)
此方法跳过macOS图形界面关机流程,直接触发内核级关机,全程不写入com.apple.system.shutdown日志,也不弹出任何保存对话框——适合已启用AutoSave的App(如Pages、Notes)或服务器环境。
方法一:终端一行执行(临时使用)
sudo shutdown -h now
方法二:封装为无提醒定时脚本
在“终端”中输入:
echo '#!/bin/sh\nsudo shutdown -h now' | sudo tee /usr/local/bin/quiet-shutdown > /dev/null && sudo chmod +x /usr/local/bin/quiet-shutdown
方法三:用pmset绑定该脚本
sudo pmset repeat wakeorpoweron MTWRFSU 22:59:00 → 然后立即执行quiet-shutdown → 实际关机发生在22:59:01,比原定时间早59秒,规避了23:00整点日志刷写窗口。【必须确保脚本路径无空格且有执行权限,否则pmset silently fails】
创建快捷指令+静默关机(保留通知但抹除日志)
如果你需要关机前弹窗提醒,又不想留痕,只能放弃系统原生关机入口,改用AppleScript驱动shell命令,并在触发前临时停用日志服务。
第一步:打开“快捷指令”App → 新建快捷指令 → 命名为“Silent Night Shutdown”
第二步:添加操作 → 搜索“运行Shell脚本” → 脚本类型选“zsh” → 粘贴以下内容:
#!/bin/zsh
sudo log config --mode "level:off" --subsystem com.apple.system.shutdown
sleep 1
sudo shutdown -h now
第三步:添加前置操作 → 搜索“显示通知” → 标题填“⚠️ 30秒后关机”,正文填“文档已自动保存,系统将静默关机” → 注意:此通知本身不产生shutdown日志,但会写入user.log,无法避免。
第四步:授予完全磁盘访问权限 → “系统设置”→“隐私与安全性”→“完全磁盘访问”→解锁后添加“快捷指令”App。【未开启此项,脚本中的sudo命令会被拦截,关机失败且无报错提示】
第五步:设为自动化 → “自动化”标签页→“创建个人自动化”→“特定时间”→设为每天22:59→关闭“运行前询问”→添加上述快捷指令→完成。

















