Total Pageviews

Sunday 1 October 2017

macOS Sierra的睡眠方式的设置

macOS通过pmset命令设置系统电源管理,其中hibernatemode的值来调整系统睡眠方式。

以下操作和介绍均以macOS Sierra 10.12 系统为范例,其他版本的macOS 系统可能稍有不同。如果Mac 电脑使用没有问题,建议保持系统默认设置,勿随意修改睡眠方式!

设置介绍
在系统偏好设置的「能源节约器」里面提供了一部分电源管理设置,但是更加详细的设置只能通过pmset命令来完成。


能源节约器

以下内容翻译自pmset命令的帮助档案(可以运行man pmset查看)

macOS 安全睡眠说明

hibernatemode可以设置的值有0、3和25。macOS系统是否写入睡眠档案到硬碟也同时取决于standby和autopoweroff的值。若要完全禁止睡眠档案,请确保hibernatemode、standby和autopoweroff的值都要设置为0。

hibernatemode = 0是桌面电脑的默认设置。系统不会将记忆体备份到硬碟上。系统必须从记忆体中恢复;如果掉电,将丢失记忆体中的数据。这是一种老旧的睡眠设置。

hibernatemode = 3是便携式电脑的默认设置。系统将存储一份记忆体的副本到硬碟上,记忆体将持续供电。系统将会从记忆体恢复,除非掉电,迫使系统从硬碟中的睡眠档案恢复。

hibernatemode = 25只能通过pmset命令来设置。系统将存储一份记忆体的副本到硬碟上,并将切断记忆体的供电。系统将从硬碟中的睡眠档案恢复。如果你想以较慢的速度睡眠、恢复,获得更长的电池寿命,那么你可以使用这种设置。

官方说明已经很清楚了,我再简化一下,系统睡眠的时候:

hibernatemode 值为0:不向硬碟写入睡眠档案,记忆体保持供电,从记忆体恢复系统(类似于Windows 系统的「待机」)
hibernatemode 值为3:如果记忆体通电,则从记忆体恢复系统;如果记忆体不通电,则从硬碟中的睡眠档案恢复系统(结合了0,25 的功能)
hibernatemode 值为25:向硬碟写入睡眠档案,记忆体断电,从硬碟中的睡眠档案恢复系统
很显然hibernatemode = 3这种设置对于MacBook来说是最好的设置状态,也是默认的设置状态,我们一般不需要进行修改。但是有些用户偏向于更省电,那么设置成25最好;有些用户偏向于延长SSD寿命,那么设置成1最好。

autopoweroff和standby的作用是到了autopoweroffdelay或standbydelay设置的时间后,就开始启动安全睡眠模式(将记忆体中的数据写入硬碟中的睡眠档案,然后切断记忆体的供电)。

具体设置步骤如下:

1. 打开「终端」,输入:
$ pmset -g #显示当前电源状态下的设置
$ pmset -g custom #显示所有电源状态下的设置
注意MacBook存在插交流电(-c)和电池供电(-b)两种不同的电源状态,对于伺服器来说还有UPS供电(-u)的电源状态)

standbydelay 10800 #standby启动的时间。单位秒
standby 1 #处于睡眠状态经过设定时间后,记忆体数据写入硬碟,关闭记忆体供电。1开启,0关闭
womp 1 #网路唤醒。1开启,0关闭
halfdim 1 #显示器亮度调低时间。单位分钟
hibernatefile /var/vm/sleepimage #睡眠档案位置
powernap 1 #PowerNAP是否开启。1开启,0关闭
gpuswitch 2 #GPU是否自动切换。1开启,0关闭,2不支持
networkoversleep 0 #睡眠时提供共享网路服务
disksleep 10 #机械硬碟停转时间。单位分钟,0关闭
sleep 0 #系统睡眠的时间。单位分钟,0关闭
autopoweroffdelay 28800 #autopoweroff启动的时间,单位为秒
hibernatemode 3 #睡眠方式设置
autopoweroff 1 #处于睡眠状态经过设定时间后,记忆体写入硬碟,关闭记忆体电源。1开启,0关闭
ttyskeepawake 1 #远程用户活动时防止睡眠。1开启,0关闭
displaysleep 10 #显示器关闭时间。单位分钟,0关闭
acwake 0 #电源状态改变时唤醒。1开启,0关闭
lidwake 1 #开盖唤醒。1开启,0关闭

2. 修改系统电源管理设置:
$ sudo pmset -a(-c|-b|-U) parameter value
其中-a表示应用设置于所有电源状态

实例
1. 完全禁止睡眠档案:
$ sudo pmset -a hibernatemode 0
$ sudo pmset -a standby 0
$ sudo pmset -a autopoweroff 0
$ sudo rm /var/vm/sleepimage

2. 写入睡眠档案,并彻底断电
$ sudo pmset -a hibernatemode 25

参考文献
Wikipedia:https://en.wikipedia.org/wiki/Pmset

No comments:

Post a Comment