mac可在23:00准时关机并同步清空dock非系统图标,方法一为终端一次性命令:sudo shutdown -h 23:00 && defaults write com.apple.dock persistent-apps -array && killall dock;方法二用快捷指令或applescript实现每日定时执行;方法三通过pmset加launchd实现长期无人值守,需创建脚本、赋权并配置plist文件。

你想让Mac在今晚23:00准时关机,同时自动清空Dock上所有非系统图标,避免手动逐个移除——这需要组合系统关机调度与Dock配置重置,两个动作必须严格同步触发,否则清空Dock的操作可能因关机太快而失败。
用终端一次性设置关机并清空Dock
这一步直接执行带副作用的关机命令,适合今晚就用、不需长期循环的场景。
打开“终端”,输入以下命令:
sudo shutdown -h 23:00 && defaults write com.apple.dock persistent-apps -array && killall Dock
回车后输入管理员密码(输时不显示字符,正常输入即可)。
【注意:&& 是关键分隔符,表示前一个命令成功执行后才运行后一个;如果关机提前触发,Dock重置将被跳过】
该命令会在23:00整点执行关机,并在关机前瞬间清空Dock的persistent-apps数组,强制Dock重启时只保留系统默认图标(如访达、邮件等)。
用快捷指令实现每日定时关机+Dock清理
适合每天固定时间执行、且希望有确认弹窗防误操作的用户。此方法不依赖插电,即使电池供电也能运行。
方法一:图形化创建自动化
打开「快捷指令」App → 切换到「自动化」标签 → 点「+」→「创建个人自动化」。
选择「特定时间」→ 设定为每天22:45(比关机早15分钟,留出执行缓冲)→「下一步」。
点「添加操作」→ 搜索「运行 Shell 脚本」→ 选择后,在脚本框中粘贴:
defaults write com.apple.dock persistent-apps -array; killall Dock; osascript -e 'tell app "System Events" to shut down'
关闭「运行前询问」→「完成」。
方法二:用AppleScript替代Shell(更稳定)
同上路径创建自动化,但添加操作时搜索「运行 AppleScript」→ 粘贴以下内容:
tell application "Dock" to quit
delay 0.5
do shell script "defaults write com.apple.dock persistent-apps -array"
delay 0.3
do shell script "killall Dock"
delay 0.2
osascript -e 'tell app "System Events" to shut down'
这组延时确保Dock进程完全退出后再写入配置,避免因竞态导致清空失败。
用pmset设置长期循环关机并联动Dock重置
此方案由系统守护进程驱动,即使你没登录、Mac处于锁屏状态也能执行,真正实现无人值守。
第一步:创建Dock清理脚本
在访达中前往「前往」→「前往文件夹」,输入 ~/Library/Scripts/ ,新建文本文档,命名为 clear-dock-and-shutdown.sh。
用文本编辑器打开,粘贴以下内容并保存:
#!/bin/bash
defaults write com.apple.dock persistent-apps -array
killall Dock
osascript -e 'tell app "System Events" to shut down'
第二步:赋予可执行权限
回到终端,输入:
chmod +x ~/Library/Scripts/clear-dock-and-shutdown.sh
第三步:注册pmset定时任务
在终端中输入:
sudo pmset repeat shutdown MTWRF 22:00:00
⚠️ 但pmset本身不支持执行脚本,必须配合launchd补全——所以紧接着执行:
mkdir -p ~/Library/LaunchAgents
nano ~/Library/LaunchAgents/com.user.clear-dock.plist
粘贴以下内容(关键:StartCalendarInterval必须比pmset关机时间早至少60秒):
把“你的用户名”替换成你实际的账户名(终端输入 whoami 可查),然后按 Control+O 保存,Control+X 退出。
最后加载任务:
launchctl load ~/Library/LaunchAgents/com.user.clear-dock.plist
【必须替换用户名,否则脚本路径失效,Dock不会清空】











