Работа с настройками энергосбережения в macOS через Terminal — это как тонкая настройка часового механизма. Один неверный параметр, и система может начать вести себя неожиданно. Например, после экспериментов с командой pmset disablesleep
в выводе pmset -g
может появиться строка SleepDisabled
, которая не исчезает даже после попыток сброса.
Давайте разберёмся, почему это происходит и как вернуть системе «чистый» вид, если это вообще возможно.
Как работает pmset и при чём здесь SleepDisabled
Утилита pmset
управляет параметрами энергосбережения macOS на низком уровне. Когда вы запускаете pmset -g
, вывод делится на две части:
- System-wide power settings — глобальные настройки, которые могут быть изменены только с правами root.
- Currently in use — текущие активные параметры, включая те, что заданы для конкретного профиля питания (например, от батареи или сети).
Команда pmset disablesleep
добавляет или изменяет параметр SleepDisabled
в разделе System-wide power settings. Например:
sudo pmset disablesleep 1 # запрещает сон
sudo pmset disablesleep 0 # возвращает разрешение на сон
После этого в выводе pmset -g
появится строка SleepDisabled 0
, даже если вы сбросите настройки через pmset restoredefaults
. Это происходит потому, что параметр сохраняется в системном файле настроек, который не очищается стандартными командами.
Кстати, технически SleepDisabled 0
и отсутствие этой строки эквивалентны: и то, и другое означает, что сон разрешён. Но визуальное присутствие строки может раздражать, особенно если вы стремитесь к «чистому» состоянию системы.
Почему SleepDisabled не исчезает и как с этим жить
Как показал анализ исходного кода IOKit (фреймворка, отвечающего за управление питанием), параметр SleepDisabled
сохраняется в файле com.apple.PowerManagement.xml
, который расположен в /Library/Preferences/SystemConfiguration/
. Однако в современных версиях macOS структура хранения настроек может меняться, и прямое редактирование этого файла не рекомендуется — это может привести к нестабильной работе системы.
Что можно сделать:
- Смириться с наличием строки. Если
SleepDisabled
установлен в0
, это не влияет на функциональность. - Полный сброс через NVRAM. Иногда помогает сброс параметров энергосбережения на уровне прошивки:
-Выключите Mac.
-Включите его и сразу зажмитеCmd + Option + P + R
.
-Держите клавиши 20 секунд.
Этот метод не гарантирует удалениеSleepDisabled
, но может восстановить другие параметры по умолчанию.
Если вы всё же хотите рискнуть, можно попробовать вручную удалить файл настроек:
sudo rm /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.plist
sudo rm /Library/Preferences/SystemConfiguration/com.apple.PowerManagement.xml
После перезагрузки система создаст новые файлы с настройками по умолчанию. Но будьте осторожны: это может затронуть и другие параметры энергосбережения.
Альтернативные способы управления сном
Если задача — просто запретить или разрешить сон, лучше использовать официальные методы:
Через Системные настройки:
Перейдите в «Экономия энергии» и установите таймеры сна вручную.
Команда caffeinate
:
caffeinate -d # предотвращает сон до завершения команды
Это временное решение, которое не оставляет следов в настройках.
Для серверов или длительных задач смело рекомендую использовать caffeinate
или скрипты с pmset sleep 0
, которые не модифицируют глобальные параметры. Например:
# Запретить сон на 2 часа
sudo pmset sleep 0 && sleep 7200 && sudo pmset sleep 1
Итог: macOS не предоставляет официального способа удалить строку SleepDisabled
из вывода pmset -g
, но её наличие не вредит системе. Если хочется идеального порядка — придётся смириться или искать нестандартные обходные пути. Главное — всегда делайте бэкап важных данных перед экспериментами с системными настройками.