目前来说,造成关机慢的主要原因可以分为OS X系统本身问题和应用软件问题。这两个的本质区别在于,前者造成系统 退出 后屏幕出现“旋转齿轮”(Spinning Gear,俗称无限菊花,甚至有人数圈数,称之20圈菊花等等)并等待很长时间,而后者是在系统 退出 之前,系统尝试 退出 所有当前运行中的程序的过程,说得更具体点就是, launchd 本身 退出 之时(系统问题)或之前(应用软件问题)。应用软件问题我们这里无法给出任何的答案,Apple也无能为力。我们主要是讨论系统问题。
在后面我们给出 一个 靠谱的 解决方 案之前,我们来看看对 一个 系统问题应该如何入手。当我们去分析大家 解决 问题的思路的时候可以发现,有这样几个大致思路,有的从硬件入手,比如重置PRAM和SMC,内存等 方法 ;有的是根据以往的 解决 大多数问题的思路开始着手,比如建议修复权限、 禁止 启动项等就是这个思路;有的是碰机会,比如关Wifi等。其实,他们都有可能,但是都没有抓住 一个 基本有效的 方法 。对于Troubleshooting的手段来说,几乎所有有经验的程序开发人员/系统管理人员等都会想到,系统日志logs,检查系统日志是排除故障的一大利器,尤其是系统级别的。其实早有网友就注意从这方面着手,可惜有点偏了没有找到重点。
1、要抓住重点,还要从系统的内部管理来说。OS X系统启动的基本步骤是这样的:
- 通电,Boot-ROM进行初始化。
- Boot-ROM后处理,此时是黑屏,电源LED灯亮,如果出现任何 错误 ,LED灯会有规律闪动。
- 开始 调用 EFI:会听到咚的那 一个 长音。
- EFI启动:会响应 用户 键盘 ,比如进入单 用户 模式等按键。正常情况下,读取boot.efi正常后,出现银色的Apple标识。
- 启动内核:看到灰色背景和旋转齿轮。从这里开始,就可以从Activity Monitor程序中找到各个进程的关系了。
- 启动 launchd :此时看到蓝屏。 launchd 负责启动和管理系统的各个服务
- login窗口出现:
- 用户 登录 : 用户 登录 后,系统也是使用另外 一个 launchd 来为该 用户 开启 用户 环境的,之后, 用户 的所有动作(除非特殊情况),都 在这 第二个 launchd 的管理之下。
2、现在让我们开启在/Applications/Utilities目录中的Activity Monitor程序,选择All Process, Hierarchically, 如下图,就可以看到各个进程之 间的 关系。核心总是占用任务ID 0的,而第 一个 launchd 总是ID 1, 用户 launchd (下图中的ID 154)是ID 1的进程子进程。
3、既然启动是这个过程,那么 退出 /关机就是 一个 反过程。先 关闭 用户 环境,就是 用户 launchd 的 退出 过程;之后是系统 退出 过程,也就是ID 1的 launchd 的 退出 过程。所以,系统 关闭 慢的原因,应该是ID 1的 launchd 在 关闭 各个由他负责 关闭 的某个/某些服务的 退出 延迟造成的。当我们了解了这些之后,就可以着手分析了。
如何找到哪个服务进程 退出 延迟了呢?这就要看日志了,打开Console程序,在左边找到/var/log >> com.apple. launchd >> launchd -shutdown.sy stem .log,之后,在右上角的查找中,输入timeout,就会出现如下图的画面,改图这是我 修改 之后的截图,在 修改 之前,两个服务的timeout时间, applevents是20 seconds, s ecurity d是15秒。
4、这就找到了系统 关闭 奇慢的真正原因了, launchd 给各个服务发出SIGKILL信号后,等待所有服务都 退出 后,才能 退出 ,而由于一些服务 退出 超时,就造成整个系统 关闭 放慢。至于,这些服务为什么/什么情况下出现 退出 异常超时以及如何彻底 解决 之,我们只有让Apple的系统开发人员处理了,我们无从修复,不过我们可以通过给他设定 退出 超时时长来改变一下它的行为,这就需要一点对plist 文件 的知识了,具体的系统( launchd )如何定义和解读plist 文件 ,我们不进行深入探讨,只给出 方法 ,有兴趣的可以去developer.apple.com去读相关的文档。
综上所述,目前来说,比较靠谱的思路就是,给每个造成 退出 超时的系统服务设定 一个 比较短的 退出 超时时间(1或2秒)。
根据上面找到的两个服务来说, 一个 是com.apple.s ecurity d, 一个 是com.apple.coreservices.appleevents。我们使用下面的命令来对他们进行处理。
sudo defaults write /Sy stem /Library/ launchd aemons/com.apple.s ecurity d ExitTimeOut -int 2
sudo defaults write /Sy stem /Library/ launchd aemons/com.apple.coreservices.appleevents ExitTimeOut -int 1
6、如果系统询问,请输入当前 管理员 密码,以完成该命令。
之后,重新启动系统后,再次关机的时候,就可以实现"秒关",而看不到旋转菊花了。当然,每个系统的情况不一样,造成缓慢的原因会不同,所以,每个人需要针对自己机器的情况来具体处理。如果需要帮助,可以留言,并把上面Console中timeout的情况说明,我可以为大家具体写出命令。
(window.slotbydup = window.slotbydup || []).push({ id: "u6900636", container: "_lzu4spjrog", async: true });版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。
相关推荐
无法登录微软账户详细教程
一些电脑用户在重装了系统之后出现微软账户无法登录的情况,而且指纹和面部识别也都没法录入了,其实大家可以通过计算机中的管理建立新用户并禁用原用户来完成。
mtu怎么获取
电脑上的mtu最好是与我们的真实网络mtu保持一致,这样才可以发挥出最大的网速水平,那么我们应该如何查看自己的mtu,并获取到最佳mtu设置标准呢,就需要在cmd中一个个排查了。
7zip解压软件怎么用
7zip解压工具许多用户喜欢在手机上使用,但是这个软件对于新手来说操作还是有点难度的,要解压的话,大家可以通过右击你的压缩包,然后进行解压,但是前提是一定要有压缩包哟。
鸿蒙3.1升级名单一览
去年9月份华为开启了鸿蒙3.0系统公测升级更新,向许多机型都推送3.0,而本月鸿蒙3.1系统也将出现在大家面前,正式开启公测招募。
appdata文件夹有什么用
appdata是每一个Windows系统中几乎都有的文件夹,而且它通常会默认在c盘中,并占用了几十个G的内存空间,但是很多朋友并不知道这个appdata文件夹有什么用。
appdata文件夹可以移到d盘吗
我们在系统检查的时候经常会发现appdata文件夹非常大,而且因为它默认是在c盘,所以会占用大量的c盘空间非常令人头疼,这时候我们可以将appdata文件夹移动到d盘解放c盘吗,其实理论上是可行的。
wmiproviderhost怎么禁用
wmiproviderhost进程如果占用了用户很大内存空间的话,其实是可以直接进行禁用的,大家只需要进入系统服务界面,然后将相关的应用直接的进行禁用就好了。
wmi provider host可以结束进程吗
清理后台的时候,肯定很多的伙伴在任务管理器里面看到了wmi provider host进程吧,大家最好奇的莫过于是不是可以去结束这个进程,其实可以结束进程,但是非常不建议哟~