Mac计划任务触发的重启由launchd管理,需通过sudo launchctl list查找reboot或softwareupdate相关任务,再用disable命令禁用或删除plist文件终止;同时关闭自动更新、停用softwareupdated调度器并屏蔽重启域名。

Mac因计划任务触发的重启常发生在深夜或你离开电脑后,系统在完成更新下载后自动执行重启,正在运行的虚拟机、未保存的代码、远程SSH会话全部中断——这不是误操作,而是launchd调度器已预载了重启指令,必须定位并清除具体任务才能终止。
查清是哪个计划任务在调用重启
系统不会凭空重启,所有计划任务都由launchd统一管理。先确认当前活跃的重启相关任务:
打开“终端”,输入:
sudo launchctl list | grep -i reboot
若返回类似 com.apple.reboot 或 com.apple.SoftwareUpdate.reboot 的条目,说明该任务已启用;若无输出,继续执行下一条命令:
sudo launchctl list | grep -i softwareupdate
重点看STATUS列是否为0(正常加载)或负数(异常退出但仍在注册表中)。只要NAME列出现reboot、restart、softwareupdated字样,就需进入下一步处理。
停用并卸载重启任务
方法一:禁用守护进程(推荐优先执行)
在终端中依次运行:
sudo launchctl disable system/com.apple.reboot
sudo launchctl disable system/com.apple.SoftwareUpdate.reboot
方法二:彻底移除任务定义文件
重启任务定义通常存于 /System/Library/LaunchDaemons/ 或 /Library/LaunchDaemons/ 下。执行:
ls /System/Library/LaunchDaemons/*reboot* /Library/LaunchDaemons/*reboot* 2>/dev/null
若列出文件(如 com.apple.reboot.plist),立即删除:
sudo rm -f /System/Library/LaunchDaemons/com.apple.reboot.plist
【注意:/System/ 下的文件受SIP保护,仅当已关闭SIP时才可删除;普通用户请跳过此步,仅执行方法一】
方法三:清除已排队的待执行重启事件
某些任务会在运行时写入临时触发标记。执行:
sudo defaults delete /Library/Preferences/com.apple.SoftwareUpdate LastRebootRequired
sudo rm -f /var/db/restart_required
阻止软件更新流程再次注入重启任务
第一步:关闭图形界面中的触发开关
点击苹果菜单() → “系统设置” → “通用” → “软件更新” → 点击“自动更新”右侧 ⓘ 图标 → 取消勾选“安装 macOS 更新”。
第二步:停用后台更新调度器
在终端中执行:
sudo softwareupdate --schedule off
sudo launchctl bootout system/com.apple.softwareupdated
第三步:屏蔽系统级重启通信端点
编辑 hosts 文件拦截重启请求域名:
sudo nano /etc/hosts
在文件末尾新增两行:
127.0.0.1 restart.apple.com
127.0.0.1 reboot.apple.com
按 Control+O 保存,Control+X 退出。

















