关于 macOS 10.15 DELL 无法自动休眠的问题

出现问题的电脑的表现状态为:

  • 点击休眠屏幕黑屏
  • 键盘背光亮 1 分钟后熄灭(正常)
  • 电源键常亮
  • 风扇一直旋转(温度较高)

于是我使用了如下命令:

log show --last 1d | grep "Wake reason"

得到的结果如下(截取关键):

powerd: [powerd:sleepWake] 
Wake reason: "<private>"  identity: "<private>"

该日志并无关键信息,于是便使用了如下命令:

cd ~/Desktop && pmset -g log > log.txt

或者可使用:

pmset -g log

或者

pmset -g assertions

得到如下结果(截取关键信息):

Assertion status system-wide:
   BackgroundTask                 0
   ApplePushServiceTask           0
   UserIsActive                   1
   PreventUserIdleDisplaySleep    0
   PreventSystemSleep             0
   ExternalMedia                  0
   PreventUserIdleSystemSleep     0
   NetworkClientActive            0
   
Listed by owning process:
   BackgroundTask named: "com.apple.parsec-fbf.flush"  
   
UserIsActive named: "com.apple.iohideventsystem.queue.tickle" 
serviceID: "100000387"
name: "IOHIDEventDriver"
product: "Keyboard"
eventType: "3"

UserIsActive named: "com.apple.iohideventsystem.queue.tickle"
serviceID: "100000421"
name: "AppleUserHIDEventSe"
product: "2.4G"
Mouse eventType: "17"

Timeout will fire in 600 secs Action =
Timeout Action Release No kernel assertions.

Idle sleep preventers: IODisplayWrangler...

分析如上信息多少都和

"com.apple.iohideventsystem.queue.tickle"
"com.apple.parsec-fbf.flush"

有关,于是便使用搜索引擎对已上信息进行搜索,找到一个帖子:

http://bbs.pcbeta.com/viewthread-1847399-1-1.html

里面有一个 @yjplayer 提到的一点

手动睡眠,盒盖睡眠完全正常,

就是自动睡眠倒计时完了只是黑屏没睡眠。

还是要用老办法,

用命令不加载那个文件就可以自动睡眠

这个老办法引起了我的注意,于是我便开始尝试使用「parsec-fbf」

作为关键词进行搜索….

找到了这篇帖子:

http://bbs.pcbeta.com/viewthread-1836895-2-1.html

里面有一个 @maojinbing 提到的一点

思考了一下:

如果楼主的手动睡眠(即点击睡眠菜单或按下电源按钮)是成功的,

建议备份好文件,

彻底停用这个文件。

副作用:可能影响siri的正常使用

这里提到了副作用,然后在追答后面还提到了:

你弄错了,是 parsec-fbf 其他不动

/系统/资源库/PrivateFrameworks/CoreParsec.framework/parsec-fbf

这里有了具体位置

便猜测是:parsec-fbf 用于定期刷新 上传 Siri Search 的分析数据

这也能解释上面说的副作用

于是先尝试把这个 parsec-fbf 开机启动关闭掉,看看会不会出现这种情况

# 显示当前的启动脚本
launchctl list

# 开机时自动启动
sudo launchctl load -w [path/to/script]

# 停止正在运行
sudo launchctl unload [path/to/script]

# 去除开机启动
sudo launchctl unload -w [path/to/script]

于是我便执行了如下命令:

# 停止运行 parsec-fbf
launchctl unload /System/Library/LaunchAgents/com.apple.parsec-fbf.plist

# 去除 parsec-fbf 开机启动
launchctl unload -w /System/Library/LaunchAgents/com.apple.parsec-fbf.plist

# 检查(提示信息说明还在运行)
launchctl list |grep "parsec-fbf"

# 清除 parsec-fbf 的缓存
cd ~/Library/Caches
rm -R com.apple.parsecd

重启检查效果