苹果Mac系统关机很慢该怎么办

目前来说,造成关机慢的主要原因可以分为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.system.log,之后,在右上角的查找中,输入timeout,就会出现如下图的画面,改图这是我修改之后的截图,在修改之前,两个服务的timeout时间, applevents是20 seconds, securityd是15秒。



4、这就找到了系统关闭奇慢的真正原因了,launchd给各个服务发出SIGKILL信号后,等待所有服务都退出后,才能退出,而由于一些服务退出超时,就造成整个系统关闭放慢。至于,这些服务为什么/什么情况下出现退出异常超时以及如何彻底解决之,我们只有让Apple的系统开发人员处理了,我们无从修复,不过我们可以通过给他设定退出超时时长来改变一下它的行为,这就需要一点对plist文件的知识了,具体的系统(launchd)如何定义和解读plist文件,我们不进行深入探讨,只给出方法,有兴趣的可以去developer.apple.com去读相关的文档。

综上所述,目前来说,比较靠谱的思路就是,给每个造成退出超时的系统服务设定一个比较短的退出超时时间(1或2秒)。

根据上面找到的两个服务来说,一个是com.apple.securityd,一个是com.apple.coreservices.appleevents。我们使用下面的命令来对他们进行处理。

sudo defaults write /System/Library/LaunchDaemons/com.apple.securityd ExitTimeOut -int 2

sudo defaults write /System/Library/LaunchDaemons/com.apple.coreservices.appleevents ExitTimeOut -int 1

6、如果系统询问,请输入当前管理员密码,以完成该命令。

之后,重新启动系统后,再次关机的时候,就可以实现"秒关",而看不到旋转菊花了。当然,每个系统的情况不一样,造成缓慢的原因会不同,所以,每个人需要针对自己机器的情况来具体处理。如果需要帮助,可以留言,并把上面Console中timeout的情况说明,我可以为大家具体写出命令。

(0)

相关推荐

  • 苹果Mac系统关机很慢该怎么解决?

    目前来说,造成关机慢的主要原因可以分为OS X系统本身问题和应用软件问题。这两个的本质区别在于,前者造成系统退出后屏幕出现“旋转齿轮”(Spinning Gear,俗称无限菊花,甚至有人数圈数,称之2 ...

  • 苹果Mac如何关机、重启、睡眠

    苹果Mac如何关机.重启.睡眠,苹果在交互上采取了比较简单直接的方式,这里介绍一些常用的关机.重启.睡眠方式. 方法1.硬件关机 01 老款机型的左上角有一个电源键,长按3秒钟,会强制关机: 02 新 ...

  • 苹果mac系统怎么用

    习惯用windows系统的用户认为苹果mac系统不好上手,但mac os x远比大家想象中的还要易用很多,那么苹果mac系统怎么用呢?今天脚本之家给大家分享苹果mac系统快速上手教程,一起来看看吧! ...

  • 苹果MAC系统复制粘贴快捷键是什么?

    苹果MAC系统复制粘贴快捷键是什么? 文本复制粘贴剪切 选择文本后,快捷键“command+c”.“command+v”.“command+x”分别对应“复制”.“粘贴”.“剪切”. 其实这些快捷键很 ...

  • mac连不上wifi怎么办?苹果mac系统连不上wifi解决方法详细图文步骤

    mac连不上wifi怎么办?小编带来了苹果mac系统连不上wifi解决方法,有的用户表示突然一下或者唤醒之后mac就连不上wifi了,该如何解决呢?希望下文的方法能帮助到大家。 一、打开Mac的Fin ...

  • Mac怎么更改系统语言 苹果mac系统语言设置方法图解

    mac系统语言设置在哪里以及怎样更改苹果mac系统语言?我们在使用电脑的时候,总是会遇到很多的电脑难题,当我们在遇到了需要更改苹果电脑的系统语言的时候,我们应该怎么设置呢?下面笔者就来给大家分享下我们 ...

  • MAC系统画图工具在哪?苹果MAC系统画图工具介绍

    苹果MAC系统画图工具介绍 按“command+空格”启动Spotlight输入“预览”后按确定启动“预览”工具.也可以双击一个图片文件快速启动“预览”. 打开“预览”后是一个选择图片的窗口,如果是编 ...

  • Mac怎么修改默认邮箱 苹果Mac系统更改默认邮箱设置图文教程

    使用Mac系统的用户都知道在Mac平台上默认的邮件客户端是“Mail”邮件,它是一款十分不错的应用程序,但是如果我们觉得它没有Airmail,ThunderBird等其他邮件客户端好怎么办呢?那么Ma ...

  • 怎么调整苹果Mac系统dock栏在左边或右边显示

    苹果系统的dock栏默认是在桌面底下中间的地方,我们可以设置将dock调整到左边或右边,下面一起来看看吧.具体如下:1. 如下图,dock栏一般默认是桌面底部下面的:2. 要改变位置的话,我们先点击桌 ...