Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


apple-mac-os:yosemite:os-x-sleep-mode-via-command-line

Настройка режима сна с помощью командной строки в 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. Он может принимать несколько значений:

  • 0 - гибернация выключена;
  • 3 - гибернация включена, содержимое оперативной памяти копируется на диск, но питание не отключается;
  • 25 - гибернация включена, содержимое оперативной памяти копируется на жёсткий диск, затем отключается питание.

С помощью параметра 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

Обсуждение

vladvlad, 01.11.2016 12:10
Спасибо большое за статью
МаксимМаксим, 02.12.2016 14:29, 02.12.2016 19:41
Что делать если активен только UserIsActive 1, а iMac не переходит в режим сна (куллеры крутятся)
Виталий ЯкобВиталий Якоб, 02.12.2016 19:41, 02.12.2016 19:46
Так же смотрите в сторону: pmset -g assertions, смотоите на позиции, которые имитируют пользовательскую активность: UserIsActive
Например, запущенный VLC может мешать компьютеру уснуть, в особенности, если что-то поставлено на паузу:
pid 16211(VLC): [0x000161c6000987c7] 00:00:15 UserIsActive named: ""
Может быть у Вас запущен торрент-клиент который качает/раздаёт или какой-нибудь "кофеин".

Попробуйте перезагрузить iMac, посомтреть как будет вести себя машина. Можно попрбовать любимое решение техподдержки: очистить NVRAM. (Command+Option+P+R)


Для себя режим сна я решил просто: Настройки -> экономия энергии -> Расписание. Указал, что каждый день в 01:00 компьютер переходит в режим сна. За минуту до перехода в режим сна система выплюнет об этом сообщение, если не нажать "отмена", система уйдёт в сон, не смотря ни на какие задачи.
ПавелПавел, 28.12.2016 13:25
А что делать, если настроено, чтобы в сон не уходил никогда, а он уходит через 15 минут, при этом отрубаются сетевые диски, и потом очень долго ищет локальный сервер, и диски приходится порой подключать вручную?
Медведев Валерий ВикторовичМедведев Валерий Викторович, 18.12.2017 15:03
Здравствуйте, Виталий. Статья действительно полезная. А по сему надеюсь на Вашу помощь (подсказку). Ситуация кратко: Хакинтош на PC Компьютер MB-B75M-PLUS / ЦП-DualCore Intel Core i3 / Video: NVIDIA GeForce GTX 650. Загрузчик Clover. DSDT и config.plist редактировал в меру своего разумения. Стояла OS 10.9.5 Maveriks. Все работало идеально. Сейчас установил 10.12.6 Sierra. Файлы DSDT и config.plist оставил прежние. Заведено вроде бы все: SpeedStep заведен, USB + USB3 заведены и работают все без нареканий, видеокарта заведена, звук заведен, сон на кнопку то же заведен. Засыпает на пару секунд и просыпается. В терминале выполнил "pmset -g assertions". Результат: везде нули, только "UserIsActive" с единицей. В отчете активен только один процесс "pid 104(hidd): [0x0000172b000986dd] 01:07:50 UserIsActive named: "com.apple.iohideventsystem.queue.tickle.4294968673.3" Что сие означает и что с этим делать выше моего разумения. Буду очень благодарен за помощь.
Виталий ЯкобВиталий Якоб, 11.01.2018 15:57
Здравствуйте.
Совсем не знаком с хакинтошем, потому не знаю что сказать.
Хакинтош как ZverCD, никогда не знаешь откуда ждать удара. :)

Но попробуйте посмотреть на подобные проблемы:
1. https://origin-discussions-us.apple.com/thread/7922363
2. https://www.reddit.com/r/applehelp/comments/43ks7u/macbook_wont_go_to_sleep_hidd_preventing_sleep/
3. http://www.insanelymac.com/forum/topic/289871-bluetooth-stuck-in-on-state-and-not-working/page-5

На сколько я понял, это проблема связана с bluetooth модулем, который по всей видимости у Вас отсутствует, но система вероятно считает иначе.

Так же, можно запланировать сон в настройках электропитания, чтобы компьютер "не смотря ни на что" уходил в сон в заданное время. У меня на данный момент так и сделано.
РоманРоман, 16.04.2018 22:18
Виталий, добрый день.
Помогите, пожалуйста разобраться.
Проблема c бессоницей возникла после апгрейда MacPro A1502 до High Sierra.
В отчёте:
pid 108(hidd): [0x00000847000982a5] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle.4294968019.3"
Timeout will fire in 120 secs Action=TimeoutActionRelease
pid 68(powerd): [0x000008d1000882c2] 00:18:07 ExternalMedia named: "com.apple.powermanagement.externalmediamounted"

Что в ноыой системе мешает Маку спать?
Спасибо большое!!!
Ваш комментарий:
 

apple-mac-os/yosemite/os-x-sleep-mode-via-command-line.txt · Последние изменения: 02.05.2018 09:58 — Алексей Максимов