2026 Аренда Mac Mini: launchd и PM2 для долгих задач 7×24 — матрица выбора, plist, автозапуск и ротация логов

Время чтения: 9 мин

Независимым разработчикам и небольшим командам, которые держат на арендованном Mac Mini фоновые воркеры в режиме семь на двадцать четыре, нужен однозначный ответ: доверить процесс встроенному в macOS launchd или поставить перед Node и Python прослойку PM2 как единый хранитель процессов.

Ниже — сравнительная таблица по сценариям, журналам, рестарту при сбое и накладным расходам, чек-лист полей plist, шаги для PM2 с автозапуском через launchd, заметки о ротации логов и блок FAQ. Перейдите на главную, в блог, на страницу аренды или в центр помощи, когда будете подключать узел. Дополнительно полезны материалы про SLA долгих задач, cron и watchdog, удержание Ollama семь на двадцать четыре и health check с webhook.

Типичные болевые точки до выбора супервизора

  1. Путаница с сессией SSH. Процесс, запущенный только внутри интерактивной оболочки, исчезает при обрыве сессии, пока им не владеет launchd или PM2.
  2. Штормы перезапуска. Агрессивный respawn без ThrottleInterval у launchd или без backoff в PM2 маскирует корневую причину и раздувает диск дубликатами строк в логах.
  3. Наблюдаемость. После окна обслуживания провайдера нужны предсказуемые пути к логам, коды выхода и одна точка правды о состоянии долгой задачи.

① Матрица решений по выбору между launchd и PM2

Таблица для быстрого сканирования: куда ложится Mac Mini с Apple Silicon, когда важнее нативный планировщик macOS, а когда — экосистема Node.

Супервизор Применимые сценарии Журналы Перезапуск при падении Ресурсы
LaunchAgent (launchd)Один бинарник Go или Swift, тонкий shell-обёртка, редко меняющийся долгий воркер без нескольких рантаймов.StandardOutPath и StandardErrorPath; при необходимости дублирование в unified logging.KeepAlive с настройкой SuccessfulExit; ThrottleInterval сдерживает плотные циклы после краша.Минимальный RSS сверх вашей задачи; нет постоянного родителя-интерпретатора, если вы его сами не указали.
PM2Несколько сервисов Node, смешанные скрипты, кластер и единый ecosystem для команды на аренде.Каталог логов PM2 на пользователя; опционально JSON-логи и модуль ротации.Встроенные лимиты рестартов, cluster и graceful reload для выката без полной остановки.Постоянный родительский процесс Node плюс демон PM2; ориентируйтесь на десятки мегабайт до учёта куч приложений.

Гибрид PM2 под launchd часто оптимален: launchd гарантирует старт при входе пользователя, PM2 управляет жизненным циклом приложений. Для HTTP-портов добавьте внешние пробы по образцу guardian и webhook.

② Ключевые поля plist launchd — операционный чек-лист

User Agent размещайте в ~/Library/LaunchAgents, проверяйте синтаксис plutil -lint, на современных версиях macOS подключайте через launchctl bootstrap gui/$UID с указанием plist.

  • Label — уникальная строка для launchctl.
  • ProgramArguments — массив с абсолютными путями; избегайте хрупкой зависимости от PATH интерактивной оболочки.
  • WorkingDirectory — чтобы относительные пути к данным совпадали после перезагрузки Mac Mini.
  • RunAtLoad — true, если job должен стартовать при загрузке агента.
  • KeepAlive — при необходимости перезапуска после ненулевого кода укажите SuccessfulExit false или используйте словарь с условиями.
  • ThrottleInterval — пауза в секундах между попытками; для «шумных» воркеров начните с десяти секунд.
  • StandardOutPath и StandardErrorPath — на томе с запасом квоты и свободного места.
  • EnvironmentVariables — токены и URL лучше подставлять отсюда или из Keychain, а не вшивать секреты в репозиторий.
  • Nice или LowPriorityIO — если пакетная долгая задача не должна вытеснять интерактивные сессии арендатора.

После правок выполните launchctl bootout для старой записи и снова bootstrap, иначе в памяти останется устаревшая конфигурация хранителя процессов.

③ Конфигурация PM2 и автозапуск при входе в систему

Рассматривайте PM2 как супервизор приложений, а macOS по-прежнему владеет жизненным циклом пользовательской сессии на удалённом узле.

  1. Установите LTS Node, затем npm install -g pm2 для глобального CLI.
  2. Опишите ecosystem.config.cjs: имя, script, cwd, переменные среды и max_memory_restart с учётом unified memory на Apple Silicon.
  3. Запустите pm2 start ecosystem.config.cjs и убедитесь, что pm2 status показывает online.
  4. Зафиксируйте список процессов командой pm2 save после стабилизации графа зависимостей.
  5. Сгенерируйте связку с launchd: pm2 startup launchd, выполните напечатанную команду от имени нужного пользователя, перезагрузите узел и проверьте поведение pm2 resurrect.
  6. Задокументируйте порты и health URL рядом с учётными данными из консоли RunMini.

④ Ресурсы и ротация логов

На арендованном Mac Mini типичный отказ — исчерпание свободного места APFS, когда текстовые журналы росли месяцами без сжатия и усечения.

  • Направляйте stdout launchd в выделенное дерево logs/ и подключайте newsyslog, внешний logrotate или еженедельный скрипт усечения.
  • Включите модуль ротации PM2 либо стриминг на удалённое хранилище, если ретеншн превышает несколько недель.
  • Следите за давлением памяти, если параллельно крутится инференс и много воркеров; согласуйте max_memory_restart с реальным объёмом RAM конфигурации.

Цифры для runbook: стартуйте ThrottleInterval с десяти секунд для нестабильных процессов. Закладывайте пятьдесят–девяносто мегабайт резидентной памяти на сам PM2 до учёта куч ваших сервисов. Начинайте ротацию или сжатие логов до срабатывания предупреждений о свободном месте ниже пятнадцати процентов на томе с данными.

⑤ FAQ

Нужен ли PM2, если у меня один Node API?

Не обязателен: launchd достаточен для одного процесса и минимального стека. PM2 оправдан при кластере, частых выкатах с reload и нескольких именованных процессах в одном репозитории.

Почему процесс пропадает после выхода из SSH?

Потому что супервизор не зарегистрирован: перенесите команду в LaunchAgent или доверьте список процессов PM2 с последующим pm2 save и pm2 startup launchd.

Делает ли launchd ротацию логов сам?

Нет: файлы по StandardOutPath растут линейно. Сочетайте их с внешней ротацией или политикой архивации; у PM2 аналогично используйте модуль или внешние инструменты.

Где взять узел и тариф после чтения чек-листа?

Откройте страницу аренды, сравните конфигурации на странице цен, затем пройдите шаги из центра помощи для SSH и доступа к консоли.

Дальнейшие шаги: зафиксируйте выбранный хранитель процессов, один раз проверьте сценарий перезагрузки, затем вынесите автоматизацию на выделенный Mac Mini. Сверьтесь с тарифами, завершите оформление аренды и держите runbook из блога рядом с заметками дежурства.

Mac Mini под launchd и PM2

Нужен Apple Silicon онлайн для сборок, агентов и долгих задач семь на двадцать четыре? Загляните на главную, сравните тарифы, оформите аренду. В блоге — гайды по долгому хостингу; в центре помощи — доступ по SSH и VNC.

Арендованный Mac Mini сохраняет ваши профили launchd и PM2 переносимыми между проектами. Завершите покупку тарифа, добавьте в закладки помощь, читайте материалы про долгосрочный хостинг в блоге RunMini или вернитесь на главную.

Аренда для задач 7×24