![]() |
1
LAMoon 59 天前
我之前的 MacBook 是角度传感器坏了,睡眠之后电脑检测不到屏幕的开合状态,就会死机重启
|
2
bokix OP 还没三天呢,这又给加回来了!用 pmset -g sched 查看,反而多了一条计划:
Scheduled power events: [0] wake at 07/23/2025 15:47:33 by 'com.apple.alarm.user-invisible-com.apple.calaccessd.travelEngine.periodicRefreshTimer' [1] wake at 07/24/2025 07:53:01 by 'com.apple.alarm.user-invisible-com.apple.osanalytics.hardhighengagementtimer' 一个是:日历出发时间预测,一个是:系统使用分析(行为预测) 那就先取消,然后彻底禁用服务: sudo pmset schedule cancelall sudo launchctl disable system/com.apple.osanalyticsd sudo launchctl disable system/com.apple.calaccessd 过两天再观察 |
3
bokix OP 这已经多少天了?来记录一下情况吧,自从上次以来,重启问题再也没有出现过,看来应该是彻底解决了,以下是完整解决办法:
1.写一个 clear_pmset_schedule.command 脚本,里面其实主要就是:sudo /usr/bin/pmset schedule cancelall >> ~/pmset_clear.log 2>&1 ,完整脚本如下: #!/bin/bash # 自动清除 macOS 中所有计划唤醒任务 echo "Clearing scheduled power events at $(date)" >> ~/pmset_clear.log # 先打印当前的计划任务到日志中 echo "Current scheduled power events:" >> ~/pmset_clear.log /usr/bin/pmset -g sched >> ~/pmset_clear.log 2>&1 # 清除所有计划任务 echo "start to cancel events:" >> ~/pmset_clear.log sudo /usr/bin/pmset schedule cancelall >> ~/pmset_clear.log 2>&1 echo "after cancel, system events:" >> ~/pmset_clear.log /usr/bin/pmset -g sched >> ~/pmset_clear.log 2>&1 echo "-------------------over---------------------" >> ~/pmset_clear.log 2.但是这样是不够的,因为命令中有 sudo ,系统自动运行的时候,是无法交互式输入密码的,所以把 pmset 命令加入到 sudo 免密指令中, 运行:sudo visudo, 在最后增加以下两行,分别是:用户, 指令等 bokix ALL=(ALL) NOPASSWD: /usr/bin/pmset schedule cancelall bokix ALL=(ALL) NOPASSWD: /usr/bin/pmset 3. 在用户目录/Users/bokix/Library/LaunchAgents 中增加启动配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC '-//Apple Computer//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'> <plist version="1.0"> <dict> <key>Label</key> <string>com.user.clearpmset</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/Users/bokix/bin/clear_pmset_schedule.command</string> </array> <key>StartInterval</key> <integer>1800</integer> <!-- 秒 = 30 分钟 --> <key>RunAtLoad</key> <true/> <key>StandardOutPath</key> <string>/tmp/clearpmset.out</string> <key>StandardErrorPath</key> <string>/tmp/clearpmset.err</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string> </dict> <key>WorkingDirectory</key> <string>/Users/bokix</string> </dict> </plist> |