原文链接

因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次!

大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 sleepimage
文件),3 和 25 (Apple 称之安全睡眠方式,会生成 sleepimage 文件),大家也都知道可以用 sudo pmset
-a hibernatemode 0 来禁止那个内存镜像文件。

以前这个命令一直可用,直到 OS X Mountain Lion
v10.8.2,大家突然发现这个命令不起作用了,重启电脑或者睡眠一段时间后,那个 sleepimage 又回来了。换句话说,某些型号的
mac,似乎强制使用安全睡眠方式。

然后网上就有各种土法,粗暴之极,诸如建立一个只读的空文件,或者用 sudo ln -s /dev/null
/var/vm/sleepimage
把内存镜像引入系统黑洞。这些土法,一般用用大概没什么问题,就算有问题,你大概也不会太在意,譬如程序崩溃,大不了重新启动好了。

我之前就是用 /dev/null 这个方法,然后我2次系统升级都出问题,2个月前 10.9.2 升级到 10.9.3 时,以及昨天
10.9.3 升级到 10.9.4
时,升级安装界面2次都停留在同一个地方,说还有几分钟就好了,然后,然后,就没有然后了,等了一个多小时,状态条动都不动。不得已强行关机。

因为我没弄其他任何所谓的系统调试东西,唯一运行过的 sudo 命令就是这个,所以怀疑是这个土法导致升级出错。

然后就觉得要花点时间弄明白 OSX 的睡眠方式,如果真不能禁止 sleepimage,死也要死得明白。

以下是我的理解,绝对不同于各大中文 Mac 网站抄来抄去的那些东西。欢迎探讨。

OSX 的睡眠参数,可以打 pmset -g 了解一下你的电脑处在什么睡眠模式下:

比较有兴趣的参数:

standbydelay 10800  

standby 0  

autopoweroffdelay
14400  

autopoweroff 0  

hibernatemode 0

这几个参数组成了 OSX 的睡眠模式。

当睡眠开始时,合上盖子,或者按电源键,如果你的 hibernatemode 是 0,OSX 是不立即往硬盘上写内存镜像的。

autopoweroff 这是欧盟的节能要求,满足以下条件时:

  • 接电源
  • 没有外接设备
  • 没有网络活动
  • 电脑是 MacBook Pro (Mid 2012 and
    later), MacBook Pro (Retina, Mid 2012 and later), MacBook Air (Mid
    2012 and later), iMac (Late 2012 and later), Mac mini (Late 2012
    and later)

到了 autopoweroffdelay x 秒后,就开始启动安全睡眠模式,往硬盘上写
sleepimage,然后进入深度睡眠。

standby 满足以下条件时:

  • 用电池
  • 没有外接设备
  • 没有网络活动
  • 没有外接显示器
  • 电脑是 MacBook Pro (Retina,
    13-inch, Late 2012) and later, MacBook Pro (Retina, 15-inch, Early
    2013) and later, MacBook Pro (Retina, Mid 2012), MacBook Air (Mid
    2010) and later, SSD and Fusion drive versions of Mac mini (Late
    2012) and later, SSD and Fusion drive versions of iMac (Late 2012)
    and later

到了 standbydelay x 秒后,就开始启动安全睡眠模式,往硬盘上写 sleepimage,然后进入深度睡眠。

可见,Apple
的安全睡眠其实是个统称,具体是由2个参数激发的,这2个参数都可以在普通睡眠一段时间后让电脑进入深度睡眠状态,但是作用的条件不相同,基本上一个是接电源时用,一个是用电池时用。

这也说明了为什么有人抱怨为什么在设置了 hibernatemode 0 后,睡眠了一段时间后,那个 sleepimage
文件又出现了,而有人说没有。这取决于他们各自睡眠的时间以及延迟时间的设定,合上又马上打开,那个文件是不会立即生成的。

所以,要完全的,合法的禁止 sleepimage 文件,不但要设置 hibernatemode
0,还要禁止电源和电池情况下的节能设置。

也就是说,你要跑下面的命令才行:

sudo pmset -a hibernatemode
0  

sudo pmset -a autopoweroff
0  

sudo pmset -a standby
0  

sudo rm /var/vm/sleepimage

然后不管你怎么重启,睡眠n久,都不会再生成内存镜像文件了,当然你的电脑就无法再进入深度睡眠模式,Apple
官方说电池待机能力可能会稍稍降低,但我看也未必,普通睡眠状态下电压已经非常小了。

如果不在乎硬盘空间的,或许不用管它,用 0 即可,也就是普通睡眠了几个小时后才往硬盘写内存镜像文件,再进入深度睡眠。

如果你也不在乎经常读写硬盘的,或者懒得折腾任何东西的,也可以用缺省模式,对笔记本来说是
3,也就是睡眠后马上就写内存镜像文件,再在几个小时后进入深度睡眠。

怎么知道电脑进入了深度睡眠?就是唤醒时看到灰屏,和载入进度条。

OSX 的深度睡眠看起来还是不错的,有机会可以跟人卖弄一下,它的深度睡眠,可以待机 1
个月。当然如果真的有人这么做,那这人肯定是缺心眼的了。

【转】教你弄清 OSX 的睡眠模式,以及合法的禁止产生 sleepimage的更多相关文章

  1. MAC的睡眠模式介绍

    因为之前用的是网上流传的土法来禁止生成 sleepimage,尝到了苦头,而且2次! 大家知道 OSX 有几种睡眠模式,其中 hibernatemode 可以是 0 (传统睡眠方式,不生成 sleep ...

  2. CentOS 7合盖后黑屏但不进入睡眠模式修改

    CentOS 7合盖后黑屏但不进入睡眠模式修改 systemd 能够处理某些电源相关的 ACPI事件,你可以通过从 /etc/systemd/logind.conf 以下选项进行配置: HandleP ...

  3. ESP8266的低功耗方案-睡眠模式

    在某些时候我们设计的产品可能不具备持久供电的环境,那通常会采用锂电池.干电池一类的轻便型的非持久性电源.当遇到这种情况时,产品的续航能力可能就会成用户评估产品的一个重要指标,加大电池容量当然是最为直接 ...

  4. 第21章 RTX 低功耗之睡眠模式

    低功耗是 MCU 的一项非常重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话,就会经常出现电量不足的情况,影响用户体验. 本章节为大家讲解 M3/4的低功耗方式之睡 ...

  5. FreeRTOS 低功耗之睡眠模式

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 低功耗是 MCU 的一项重要的指标,比如某些可穿戴的设备,其携带的电量有限,如果整个电路消耗的电量特别大的话 ...

  6. 详解Mac睡眠模式设置

    详解Mac睡眠模式设置 原文链接:http://www.insanelymac.com/forum/index.php?showtopic=281945 需要说明的是,首先这篇文章是针对已经能够成功睡 ...

  7. sitecore系列教程之Sitecore个性化-配置文件,模式和角色

    这是利用Sitecore规则引擎实现数字化转换的三部分系列的第二部分.阅读上一篇文章,通过为您的个性化体验定义内容策略来设置基础.   Sitecore有一个非常强大的规则引擎,可以帮助推动个性化的用 ...

  8. Hive教程之metastore的三种模式

    Hive中metastore(元数据存储)的三种方式: 内嵌Derby方式 Local方式 Remote方式 [一].内嵌Derby方式 这个是Hive默认的启动模式,一般用于单元测试,这种存储方式有 ...

  9. 【转】Android驱动开发之earlysuspend睡眠模式编程总结

    原文网址:http://blog.csdn.net/bigapple88/article/details/8669537 (1)添加头文件: #include <linux/earlysuspe ...

随机推荐

  1. ubuntu编译安装ruby1.9.3,从p551降级到p484

    在升级redmine的时候遇到ruby版本适配的问题.找了些资料. ruby安装包除了官方网站,可以参考 http://ftp.ruby-lang.org/pub/ruby/1.9/ 需要从1.9.3 ...

  2. SQLServer覆盖索引

    为了更好地理解覆盖索引,在正式介绍覆盖索引之前,首先稍微来谈一谈有关索引的一些基础知识. 数据页和索引页 在SQLServer中,数据存储的基本单位是页,一页的大小为8KB,分别由页首,数据行和行偏移 ...

  3. 【Gitbook】实用配置及插件介绍

    前言 实际效果可以查看这里 github地址 配置 title 设置书本的标题 "title" : "Gitbook Use" author 作者的相关信息 & ...

  4. ASP.NET:EntityFramework实现Session

    ASP.NET默认的InProc模式的Session既浪费内存又在网站重启时存在数据丢失问题,SQLServer模式的Session只支持SQL Server又需要命令行配置.使用EntityFram ...

  5. 【数组】4Sum

    题目: Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = ...

  6. manjaro开启sdd trim

      $ sudo systemctl enable fstrim.timer; $ sudo systemctl start fstrim.service; $ sudo systemctl stat ...

  7. ASP.NET Core 中的 ORM 之 Entity Framework

    目录 EF Core 简介 使用 EF Core(Code First) EF Core 中的一些常用知识点 实体建模 实体关系 种子数据 并发管理 执行 SQL 语句和存储过程 延迟加载和预先加载 ...

  8. win7 iis7 asp.net 编译器错误消息: CS0016:

    编译器错误消息: CS0016: 未能写入输出文件“c:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root ...

  9. Angular2 获取当前点击的元素

    <a (click)="onClick($event)"></a> onClick($event){ console.log($event.target); ...

  10. [转]LINQ: Using INNER JOIN, Group and SUM

    本文转自:https://stackoverflow.com/questions/530925/linq-using-inner-join-group-and-sum SELECT T1.Column ...