mac每日23:00自动关机前5分钟(22:55)清空打印队列,需用launchd执行shell脚本调用cupsreject、cancel和lpstat命令清理,再通过sudo pmset设置系统级定时关机,二者协同确保无残留打印任务。

你想让Mac在每天晚上11点自动关机,同时确保关机前清空所有排队中的打印任务,避免第二天开机后突然开始打印旧文档——这需要组合系统电源调度与打印队列清理逻辑,不能只靠图形界面一键完成。
用终端命令设置每日定时关机并自动清空打印队列
这一步必须用 pmset + launchd 组合实现,因为系统设置界面无法触发打印队列清理动作,而 shutdown 命令本身不支持附加脚本。
第一步:创建清理打印队列的 shell 脚本
在访达中按 Command + Shift + G,输入 ~/Library/Scripts/,回车进入。若 Scripts 文件夹不存在,手动新建一个。在该文件夹内新建文本文件,命名为 clear_print_queue.sh。
第二步:用文本编辑器打开该文件,粘贴以下内容:
#!/bin/bash
cupsreject -r "auto-cleanup" all
cancel -a
sleep 2
lpstat -o | awk '{print $1}' | xargs -r cancel
第三步:赋予执行权限
回到终端,输入:chmod +x ~/Library/Scripts/clear_print_queue.sh → 回车。
第四步:创建 launchd plist 配置文件
在访达中前往 ~/Library/LaunchAgents/,新建文件 com.user.clearprint.shutdown.plist。
第五步:用文本编辑器打开该 plist,粘贴以下内容(注意替换 YOUR_USERNAME 为你的实际用户名):
第六步:加载配置并启用
在终端中输入:launchctl load ~/Library/LaunchAgents/com.user.clearprint.shutdown.plist → 回车。
同步设置每日23:00准时关机
launchd 脚本只负责清理打印队列,关机仍需由系统电源管理模块执行,两者时间要错开——先清队列,再关机。
在终端中输入:sudo pmset repeat shutdown MTWRFSU 23:00:00 → 回车 → 输入管理员密码。
这条命令会覆盖所有已有重复关机任务,且【不受用户是否登录影响,只要Mac通电并处于唤醒状态,到点即执行】。
验证是否生效:输入 pmset -g sched → 回车,输出中应出现一行 shutdown 条目,时间精确到秒。
取消已存在的所有打印任务(立即执行)
方法一:终端一次性清空
打开终端,直接运行:cancel -a → 回车。这条命令会立即终止当前所有排队中的打印作业,无确认提示。
方法二:图形界面手动操作
点击菜单栏右上角打印机图标 → 选择“打开打印队列” → 点击左下角“删除全部作业”按钮 → 在弹出窗口中点击“删除全部”。
注意:如果打印机图标未显示,请先在“系统设置 → 蓝牙”中确保蓝牙开启,或前往“系统设置 → 打印机与扫描仪”确认设备在线。











