记一次MacBook Pro 2018款睡眠唤醒屏幕无法点亮(睡死)引发的日志分析

症状

自从用上了MacBook设备,就没有了关机的习惯,所以每次用完都是直接盖屏,本来一直都是相安无事的,直到有几次出现打开盖子发现屏幕无法点亮,外接显示器发现所有的屏幕都在外屏中,MacBook Pro的内屏相当于丢失一样,只有关机重新启动,有时候甚至连外屏都没有数据显示,这种时候只能强制关机并重启,虽然用了快半年的设备,这种情况只出现过两三次,但是在昨天盒盖后,第二天醒来发现键盘灯亮了,但是屏幕没有点亮,这时候我就想看看系统日志是否能有所发现,于是就再次强制关机重启,找出mac系统的系统日志来进行分析。

分析

想要查看mac系统的日志,可以使用 command+space 在 Spotlight search 中输入 console,打开控制台,控制台信息如图所示:

console

其中,system.log为实时的系统日志;~/Library/Logs为用户应用程序日志所在;/Library/Logs为系统级应用日志所在;/var/log则为系统层面的日志。

首先,我先去查看了一下 system.log,看看是否能找出有关的日志信息,结果却发现有一款已经被卸载的应用在不断的自启动重试,如图:

ss

因为这款软件早就已经被卸载了,却还一直有重启重试,肯定是哪里有文件设置了它作为开机启动且不断重试,所以我就去搜索了一下 mac启动项文件位置,结果得到一下搜索结果 -> mac系统启动项说明。果然在 ~/Library/LaunchAgents 下有一个关于此软件的 .plist 配置文件,如图所示:

plist

打开文件,将 KeepAlive 选项设置为 NO 保存,这样就关闭了此软件一直自启不成功重试(既然都已经删了该软件,其实可以将这个配置文件直接删除的)。

KeepAlive

修改了几点地方,还有待实验,所以未完待续。。。。

mac系统启动项说明

除了常规的在“系统” -> “偏好设置” -> “用户和群组” 中设置开机启动项和软件的偏好设置之外,大部分程序的开机启动设置会以 .plist 文件的方式处于如下位置:

  • /Library/LanuchDaemons : 系统启动时运行,用户不登录也会运行
  • /Library/LaunchAgents : 用户登录后运行
  • ~/Library/LaunchAgents : 用户自定义的用户启动项
  • /System/Library/LaunchDaemons : 系统自带的启动项
  • /System/Library/LaunchAgents : 系统自带的启动项

每个 .plist 文件中,有3个属性控制着是否会开机自动启动

  • KeepAlive : 决定程序是否需要一直运行,如果是false则需要时才启动。默认false。
    • 如果 KeepAlive = false: >* 当 RunAtLoad = false时:程序只有在有需要的时候运行 >* 当 RunAtLoad = false时:程序在启动时会运行一次,然后等待在有需要的时候运行 >* 当 SuccessfulExit = true/false时:不论 RunAtLoad 值是什么,都会在启动时运行一次,其后根据 SuccessfulExit 值来决定是否重启。
    • 如果 KeepAlive = true : >* 不论 RunAtLoad / SuccessfulExit 值是什么,都会启动时运行且一直保持运行状态
  • RunAtLoad : 开机时是否运行。默认false
  • SuccessfulExit : 此项为true时,程序正常退出时重启(即退出码为0);为false时,程序非正常退出时重启。此项设置时会隐含默认RunAtLoad=true,因为程序需要至少运行一次才能获得退出状态

所以,如果不希望开机自动运行,就可以进行以下操作:

  • 找到对应程序的 .plist 文件
  • 删除 SuccessfulExit 属性
  • 将 RunAtLoad / KeepAlive 均设为 <false/>

后续

这几天发现了一篇这个文章 ☞ 我的 Macbook Pro 中招了”屏幕门”: 建议用 16 到 18 款的 MBP 用户可以关注下

发现我的这个问题就是这个情况 /手动捂脸

如图:

v2ex帖子

刚好上次因为某些原因换了一次屏幕,目前好像还没有发现此问题。

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦