Энергия, сон и обслуживание системы

Рейтинг: 78.5% · 14 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Энергия, сон и обслуживание системы

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы (вы здесь)
  38. Профили конфигурации и основы MDM
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Ноут не разрядился за ночь, скрипт упал на середине, потому что Mac уснул, и кто-то до сих пор советует прогонять "обслуживание" клинером раз в неделю. Все три боли - про одно: про то, как macOS управляет питанием и сама себя обслуживает. Разберёмся в механике, а не в кнопках. После этого урока ты будешь читать pmset -g как открытую книгу, заставишь Mac бодрствовать ровно на время задачи через caffeinate, поймёшь, почему сон на Apple Silicon устроен иначе, и перестанешь верить в магию "очистки кэшей".

Кто рулит питанием: pmset и I/O Kit

За энергопрофиль в macOS отвечает демон powerd, а инструмент управления - pmset (power management settings). Это не просто переключатель таймеров: pmset пишет настройки в NVRAM/конфиг и одновременно показывает живое состояние подсистемы питания через I/O Kit.

Начни всегда с просмотра. Флаг -g (get) без аргумента показывает активный профиль:

Код: Выделить всё

$ pmset -g
System-wide power settings:
Currently in use:
 standby              1
 Sleep On Power Button 1
 hibernatemode        3
 ttyskeepawake        1
 displaysleep         10
 sleep                1 (sleep prevented by powerd)
 disksleep            10
 powernap             1
Читаем по строкам. displaysleep 10 - экран гаснет через 10 минут простоя. disksleep 10 - паркуется вращающийся диск через 10 минут (на SSD флаг почти бесполезен, но остаётся). sleep 1 - система уходит в сон через 1 минуту, но рядом приписка "sleep prevented by powerd" - значит прямо сейчас что-то держит систему. powernap 1 - Power Nap включён (короткие пробуждения во сне для почты, Time Machine, обновления заметок). hibernatemode 3 и standby 1 - про режим сна, к ним вернёмся.

Профили у ноута разные для розетки и батареи. Смотри их раздельно:

Код: Выделить всё

$ pmset -g custom
Battery Power:
 displaysleep         2
 sleep                5
 powernap             0
AC Power:
 displaysleep         10
 sleep                0
 powernap             1
Тут видно логику Apple: от батареи экран гаснет за 2 минуты и система спит через 5, от сети экран живёт 10 минут, а sleep 0 на AC значит "не засыпать по простою вообще". Это и есть то, что в Системных настройках -> Аккумулятор раскладывается на ползунки. CLI просто честнее: показывает числа.

Менять настройки - через sudo и селектор аудитории: -b (battery), -c (charger/AC), -a (all), -u (UPS). Несколько ключей за один вызов:

Код: Выделить всё

$ sudo pmset -c displaysleep 15 disksleep 0 sleep 0
$ sudo pmset -b displaysleep 3 sleep 8
Первая строка: на питании от сети экран гаснет через 15 минут, диск не паркуется, система не засыпает (типичный профиль рабочей станции или Mac, который раздаёт по сети). Вторая: от батареи бережём ресурс. Сбросить к заводским - sudo pmset -a с нужными значениями, единой кнопки reset нет, но Apple отдаёт дефолты по железу.

Изображение

Сон на Apple Silicon: почему glassbox, а не hibernate

На Intel-маках было три классических режима: hibernatemode 0 (RAM под питанием, мгновенное пробуждение, но при потере питания всё теряется), 25 (полный дамп RAM на диск в sleepimage и обесточивание памяти - медленно, зато переживает разряд) и 3 (гибрид: RAM и под питанием, и сдублирован на диск). Дефолт - 3.

На Apple Silicon картина другая, и это важно понять. Чип M-серии не "выключается" в привычном смысле - он уходит в сверхнизкое энергопотребление, оставаясь по сути всегда подзапитанным (тот самый "always on", из-за которого включение мгновенное, а Find My и уведомления работают). Поэтому agressive-hibernate в стиле Intel тут не нужен и переключение hibernatemode на Apple Silicon во многом декоративно: система сама решает, когда сбросить состояние в хранилище. Не пытайся "ускорить сон mac" ручным выставлением hibernatemode 25 на M-чипе - выигрыша по батарее почти нет, а лишние записи на SSD ты получишь.

За глубокий сон отвечает standby и пара задержек:

Код: Выделить всё

$ pmset -g | grep -iE 'standby|hibernate'
 standby              1
 standbydelaylow      10800
 standbydelayhigh     86400
 hibernatemode        3
standbydelaylow = 10800 секунд (3 часа) - если заряд низкий, в standby уходим через 3 часа сна. standbydelayhigh = 86400 (24 часа) - при высоком заряде ждём сутки. Граница порога заряда настраивается через highstandbythreshold. Это объясняет классический вопрос "почему батарея mac подсела за ночь" - первые часы система держит RAM под питанием ради быстрого пробуждения и только потом уходит глубже.

Что не даёт уснуть: sleep assertions

Главный практический инструмент диагностики "почему Mac не засыпает / просыпается сам" - это ассершены (power assertions). Любой процесс через I/O Kit может заявить "не спи, я работаю". pmset показывает их:

Код: Выделить всё

$ pmset -g assertions
2026-06-15 10:42:11 +0300
Assertion status system-wide:
   PreventUserIdleSystemSleep     1
   PreventUserIdleDisplaySleep    1
   PreventSystemSleep             0
Listed by owning process:
   pid 533(coreaudiod): [..] PreventUserIdleSystemSleep "audio is active"
   pid 1187(Google Chrome): [..] PreventUserIdleDisplaySleep "playing video"
Читаем как улики. PreventUserIdleDisplaySleep от Chrome со строкой "playing video" - вкладка с видео не даёт гаснуть экрану. PreventUserIdleSystemSleep от coreaudiod - идёт звук. Каждый ассершен несёт человекочитаемую причину - это и есть ответ на вопрос "кто виноват". Завис на проде Mac, который должен был уснуть, - первым делом сюда.

Связанная команда - pmset -g log (история событий сна/пробуждения с причинами Wake reason) и pmset -g everything для полного дампа. Если Mac будит себя ночью, в логе увидишь строки вида Wake from Standby due to RTC (плановое пробуждение по таймеру, например Power Nap) или из-за сети.

caffeinate: бодрствовать ровно сколько надо

Раз ассершены - это родной механизм, то и держать систему бодрой надо им, а не "пошевелить мышкой". Для этого есть caffeinate - он создаёт ассершены под капотом. Флаги собираются как кубики:
  • -d - не давать гаснуть дисплею
  • -i - не давать системе уснуть по простою (idle)
  • -m - не парковать диск
  • -s - не давать системе уснуть совсем (работает только на AC-питании)
  • -u - объявить пользователя активным (если экран погас - включит его), по умолчанию на 5 секунд
  • -t N - держать ассершен N секунд и снять
  • -w PID - держать, пока жив процесс с этим PID
Самый полезный паттерн - передать caffeinate команду. Тогда он форкается, запускает её и держит бодрствование ровно до её завершения:

Код: Выделить всё

$ caffeinate -i make release
Пока идёт сборка - система не уснёт, сборка кончилась - ассершен снят автоматически. Никаких "забыл выключить". Если процесс уже запущен в другом окне, привяжись к его PID:

Код: Выделить всё

$ caffeinate -i -w 4471
Подержать ноут бодрым ровно час во время выгрузки:

Код: Выделить всё

$ caffeinate -i -t 3600
Проверить, что ассершен реально встал, можно тем же pmset -g assertions из другого окна - увидишь там процесс caffeinate. Грабли: -s молча игнорируется на батарее, так что для гарантии "не спать вообще" держи ноут в розетке. И помни - caffeinate про дисплей и систему, он не отменяет блокировку экрана и не мешает FileVault.

Батарея: циклы, состояние, оптимизированная зарядка

"Здоровье" батареи - это не магия, а измеримые параметры. Циклы и состояние из терминала:

Код: Выделить всё

$ system_profiler SPPowerDataType | grep -A4 "Health Information"
   Health Information:
       Cycle Count: 247
       Condition: Normal
       Maximum Capacity: 91%
Cycle Count - число полных циклов (один цикл - суммарный разряд на 100%, хоть по кускам). Ресурс современных MacBook - около 1000 циклов до заметной деградации. Maximum Capacity 91% - сколько от паспортной ёмкости осталось. Графически то же самое - в Системных настройках -> Аккумулятор -> Состояние аккумулятора.

Оптимизированная зарядка (Optimized Battery Charging) - система учит твой график и придерживает заряд на 80%, дозаряжая до 100% к моменту, когда ты обычно отключаешься. Плюс на современных Mac есть лимит зарядки 80% (Battery -> Charging) для тех, кто постоянно в розетке. Это снижает износ лучше любых сторонних утилит. Не гоняй батарею искусственно "для калибровки" - на литий-полимере это вредит, а не помогает.

Обслуживание: periodic ушёл, паника не нужна

Теперь главный миф. Раньше macOS прогоняла периодические скрипты /etc/periodic/daily|weekly|monthly - ротация логов, чистка временных каталогов. Их запускал launchd (не cron - в macOS cron давно вытеснен launchd), а ты мог дёрнуть руками через sudo periodic daily.

Важная новость 2026: начиная с macOS 15 и в macOS 26 Tahoe команда periodic и эти скрипты удалены. И это не повод бежать ставить "клинер". Работу периодики давно перехватили специализированные демоны: ротацией и чисткой логов занимается logd (унифицированная система логов в /var/db/diagnostics, а не текстовые файлы), временные каталоги чистит сама система, кэши пересобираются по требованию. Mac обслуживает себя сам - в фоне, в том числе используя короткие пробуждения Power Nap.

Что реально стоит уметь делать руками:

1. Посмотреть логи. Текстовых /var/log почти не осталось, всё в unified log:

Код: Выделить всё

$ log show --predicate 'eventMessage CONTAINS "Wake"' --last 2h --info
Это и есть твой инструмент диагностики сна/пробуждений на современной macOS.

2. Переиндексировать Spotlight через mdutil, когда поиск "сломался" (не находит файлы, грузит CPU процессом mds/mdworker). Статус по всем томам:

Код: Выделить всё

$ mdutil -sa
/System/Volumes/Data:
    Indexing enabled.
Полностью снести индекс и пересобрать (требует sudo и включённого индексирования):

Код: Выделить всё

$ sudo mdutil -E /
Флаг -E стирает существующий метаданными-стор, и macOS строит его заново - это лечит большинство "Spotlight ничего не находит". Отключить индексацию тома совсем - sudo mdutil -i off /Volumes/Backup.

3. Обновлять систему и прошивку. На Apple Silicon прошивка (firmware/iBoot/recovery) обновляется только вместе с обновлением macOS - отдельных firmware-updater'ов нет. Проверить и поставить из терминала:

Код: Выделить всё

$ softwareupdate --list
$ sudo softwareupdate -ia --restart
-i установить, -a все доступные, --restart перезагрузиться после. Именно так прилетает свежий firmware - поэтому "не ставить обновления годами" на Mac это ещё и устаревшая прошивка.

Типичные грабли
  • Ставить hibernatemode 25 на Apple Silicon "чтобы экономить батарею". Выигрыша почти нет, а износ SSD растёт.
  • Будить мышкой/скриптом-кликером вместо caffeinate. Это костыль, который ломается. Ассершен - правильный путь.
  • Думать, что -s у caffeinate всегда работает. На батарее он молчит. Нужна гарантия - в розетку.
  • Искать "почему не спит" наугад. Ответ почти всегда в pmset -g assertions - там написана причина.
  • Ставить "клинеры" ради чистки кэшей и запуска "maintenance scripts". В Tahoe этих скриптов уже нет, система чистит сама, а агрессивная чистка кэшей только заставит их пересобираться.
  • Путать disksleep с реальной экономией на SSD - он про парковку HDD, на флеше эффект почти нулевой.
Мини-лаба (повторить руками)
  • Выведи pmset -g и pmset -g custom. Найди свои значения displaysleep/sleep для AC и батареи, объясни их вслух.
  • Запусти долгую безобидную команду под кофеином: caffeinate -i sleep 120. В другом окне сделай pmset -g assertions и найди процесс caffeinate с его ассершеном.
  • Открой вкладку с видео в браузере и снова глянь pmset -g assertions - увидишь PreventUserIdleDisplaySleep. Закрой вкладку - ассершен пропадёт.
  • Посмотри состояние батареи: system_profiler SPPowerDataType | grep -A4 "Health". Запиши Cycle Count и Maximum Capacity.
  • Глянь статус Spotlight: mdutil -sa. Реиндексировать на учебной машине не обязательно - просто прочитай статус.
  • Прочитай журнал пробуждений: log show --predicate 'eventMessage CONTAINS "Wake reason"' --last 6h.
Контрольные вопросы
  • Чем caffeinate -s отличается от -i и в каком случае -s не сработает?
  • Где в выводе pmset искать ответ на вопрос "какой процесс не даёт Mac уснуть" и как туда добраться одной командой?
  • Почему ручная установка hibernatemode 25 на Apple Silicon - плохая идея?
  • Что в macOS Tahoe заменило периодические maintenance-скрипты и почему "клинер" для их запуска не нужен?
Итог

Питанием рулит pmset: -g читает, -g assertions вскрывает виновника бессонницы, -c/-b правят профили для сети и батареи. Бодрствование держи через caffeinate, привязывая его к команде или PID, а не клик-костылями. Сон на Apple Silicon - это "always on" с задержками standby, hibernatemode там трогать незачем. Батарея измеряется циклами и Maximum Capacity, а оптимизированная зарядка бережёт её лучше утилит. И главное: periodic в Tahoe больше нет, система обслуживает себя сама через logd и фоновые демоны - твоя реальная работа сводится к чтению логов через log show, редкой переиндексации Spotlight через mdutil и установке обновлений, которые заодно несут прошивку. Никаких клинеров.
👍5 ❤️3 🔥2 😄 🤔1
Аватара пользователя
roganxt3
Сообщения: 1
Зарегистрирован: 11 май 2026, 22:05

Re: Энергия, сон и обслуживание системы

Сообщение roganxt3 »

Спасибо, наконец понял почему ноут ночью с 80 до 60 садится - это standbydelayhigh держит RAM первые сутки. Всегда грешил на приложения.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
selflast
Сообщения: 1
Зарегистрирован: 30 май 2026, 08:36

Re: Энергия, сон и обслуживание системы

Сообщение selflast »

Запустил caffeinate -i на бэкап, в соседнем окне pmset -g assertions и правда вижу свой процесс. Раньше тупо двигал мышку каждые 5 минут, стыдно даже.
👍 ❤️1 🔥 😄 🤔1
Ответить
← Предыдущая глава
Производительность и энергия: powermetrics, диагностика
Следующая глава →
Профили конфигурации и основы MDM

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK
Похожие запросы: Траблшутинг и обслуживание Mac

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость