xiaocrab.net

macOS Sierra 睡眠方式設置

macOS 通過pmset命令設置系統電源管理,其中hibernatemode的值來調整系統睡眠方式。

以下操作和介紹均以 macOS Sierra 10.12 系統為範例,其他版本的 macOS 系統可能稍有不同。如果 Mac 電腦使用沒有問題,建議保持系統默認設置,勿隨意修改睡眠方式!

設置介紹

在系統偏好設置的「能源節約器」裏面提供了一部分電源管理設置,但是更加詳細的設置只能通過pmset命令來完成。

能源節約器

以下內容翻譯自pmset命令的幫助檔案(可以運行man pmset查看)

macOS 安全睡眠說明

hibernatemode可以設置的值有 0、3和25。 macOS 系統是否寫入睡眠檔案到硬碟也同時取決於standbyautopoweroff的值。若要完全禁止睡眠檔案,請確保hibernatemodestandbyautopoweroff的值都要設置為 0。

hibernatemode = 0是桌面電腦的默認設置。系統不會將記憶體備份到硬碟上。系統必須從記憶體中恢復;如果掉電,將丟失記憶體中的數據。這是一種老舊的睡眠設置。

hibernatemode = 3是便攜式電腦的默認設置。系統將存儲一份記憶體的副本到硬碟上,記憶體將持續供電。系統將會從記憶體恢復,除非掉電,迫使系統從硬碟中的睡眠檔案恢復。

hibernatemode = 25只能通過pmset命令來設置。系統將存儲一份記憶體的副本到硬碟上,並將切斷記憶體的供電。系統將從硬碟中的睡眠檔案恢復。如果你想以較慢的速度睡眠、恢復,獲得更長的電池壽命,那麽你可以使用這種設置。

官方說明已經很清楚了,我再簡化一下,系統睡眠的時候:

  1. hibernatemode 值為 0:不向硬碟寫入睡眠檔案,記憶體保持供電,從記憶體恢復系統(類似於 Windows 系統的「待機」)
  2. hibernatemode 值為 3:如果記憶體通電,則從記憶體恢復系統;如果記憶體不通電,則從硬碟中的睡眠檔案恢復系統(結合了 0,25 的功能)
  3. hibernatemode 值為 25:向硬碟寫入睡眠檔案,記憶體斷電,從硬碟中的睡眠檔案恢復系統

很顯然hibernatemode = 3這種設置對於 MacBook 來說是最好的設置狀態,也是默認的設置狀態,我們一般不需要進行修改。但是有些用戶偏向於更省電,那麽設置成 25 最好;有些用戶偏向於延長 SSD 壽命,那麽設置成 1 最好。

autopoweroffstandby的作用是到了autopoweroffdelaystandbydelay設置的時間後,就開始啟動安全睡眠模式(將記憶體中的數據寫入硬碟中的睡眠檔案,然後切斷記憶體的供電)。

具體設置步驟如下:

1. 打開「終端」,輸入

1
2
$ pmset -g #顯示當前電源狀態下的設置
$ pmset -g custom #顯示所有電源狀態下的設置

注意 MacBook 存在插交流電(-c)電池供電(-b)兩種不同的電源狀態,對於伺服器來說還有UPS供電(-u)的電源狀態)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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. 修改系統電源管理設置

1
$ sudo pmset -a(-c|-b|-U) parameter value

其中-a表示應用設置于所有電源狀態

實例

1. 完全禁止睡眠檔案

1
2
3
4
$ sudo pmset -a hibernatemode 0
$ sudo pmset -a standby 0
$ sudo pmset -a autopoweroff 0
$ sudo rm /var/vm/sleepimage

2. 寫入睡眠檔案,並徹底斷電

1
$ sudo pmset -a hibernatemode 25

參考文獻

  1. Wikipedia:pmset 詞條