Настройка режима сна с помощью командной строки в OS X

Для того чтобы узнать количество минут, спустя которые компьютер уйдёт в режим сна нужно выполнить:

sudo systemsetup -getcomputersleep

Например, чтобы настроить переход компьютера в режим сна через 1 час бездействия:

sudo systemsetup -setcomputersleep 60

Для того чтобы выключить переход в режим сна:

sudo systemsetup -setcomputersleep 0

или

sudo systemsetup -setcomputersleep Never

Как и в любой другой современной ОС, OS X имеет несколько режимов сна. Простой сон - оперативная память компьютера продолжает потреблять питание. Глубокий сон (гибернация) - содержимое оперативной памяти копируется на жёсткий диск.

По умолчанию, режим гибернации включен только на MacBook, на остальных моделях его можно включить. Посмотрим текущие настройки электропитания:

sudo pmset -g

Нас интересует параметр hibernatemode. Он может принимать несколько значений:

С помощью параметра standbydelay можно задать время в секундах, спустя которое компьютер будет автоматически переходить с режима сна в режим гибернации.

Для экономии электроэнергии можно настроить настольный Mac следующим образом: Включаем режим гибернации с автоматическим отключением питания через 15 минут.

sudo pmset hibernatemode 3 standbydelay 900

Или включаем более экономный режим, который будет отключать питание сразу после копирования оперативной памяти

sudo pmset hibernatemode 25

Так же, можно вручную отправить Mac в сон

pmset sleepnow

В процессе использования OS X некоторые пользователи могут заметить, что система перестала уходить в режим сна автоматически, а все настройки на первый взгляд будут верными. Для того чтобы разобраться с ситуацией, посмотрим сводку энергопотребления, выполним в терминале:

pmset -g assertions

Нас интересует параметр «PreventUserIdleSystemSleep», если он имеет значение «1», то значит в системе запущено какое-то приложение или служба не позволяющая OS X засыпать. Если взглянуть на вывод внимательнее, то в «Listed by owning process» можно будет увидеть службу, которая мешает автоматическому переходу в режим сна. Вывод с моего компьютера:

Assertion status system-wide:
 BackgroundTask 0
 ApplePushServiceTask 0
 UserIsActive 1
 PreventUserIdleDisplaySleep 0
 PreventSystemSleep 0
 ExternalMedia 1
PreventUserIdleSystemSleep 1
 NetworkClientActive 0
Listed by owning process:
 pid 30(powerd): [..] 121:05:39 ExternalMedia named: "com.apple.powermanagement.externalmediamounted" 
 pid 31(com.apple.serve): [..] 00:14:04 PreventUserIdleSystemSleep named: "com.apple.collabd" 
 pid 75(hidd): [..] 00:01:52 UserIsActive named: "com.apple.iohideventsystem.queue.tickle" 
	Timeout will fire in 21 secs Action=TimeoutActionRelease
Kernel Assertions: 0x10c=USB,BT-HID,MAGICWAKE
 id=503 level=255 0x4=USB mod=09.03.15, 18:44 description=EHC1 owner=AppleUSBEHCI
 id=506 level=255 0x100=MAGICWAKE mod=09.03.15, 19:36 description=en0 owner=en0
 id=508 level=255 0x8=BT-HID mod=01.01.70, 3:00 description=com.apple.driver.IOBluetoothHIDDriver owner=BNBMouseDevice
 id=522 level=255 0x8=BT-HID mod=01.01.70, 3:00 description=com.apple.driver.IOBluetoothHIDDriver owner=AppleBluetoothHIDKeyboard

Как видно, мешает «com.apple.collabd», этот компонент входит в набор утилит OS X Server, и запускается даже если у Вас нет настроенных служб. Насколько мне удалось понять, эта служба необходима для wiki сервисов которые можно поднять с помощью OS X Server.

Для того чтобы отключить службу, необходимо выполнить:

sudo serverctl disable service=com.apple.collabd

Затем можно снова выполнить просмотр сводки, если значение «PreventUserIdleSystemSleep», изменилось на «0», то при отсутствии других проблем, автоматический переход в режим сна должен заработать.


Проверено на следующих конфигурациях:

Версия ОС
Apple OS X Yosemite (10.10)

Автор первичной редакции:
Виталий Якоб
Время публикации: 09.03.2016 14:45