Про подходы к настройке systemd, rc и launchd — что лучше для *nix-систем?
Сейчас много говорят про разные способы запуска и управления службами в Linux, FreeBSD и других UNIX-подобных системах. systemd в Linux всем уже привычен, но в BSD по-прежнему популярны классические rc-скрипты, а у macOS есть launchd. В чём реальные плюсы и минусы каждого?
systemd — мощный и современный, умеет параллельно запускать процессы, отслеживать состояние, управлять cgroups. Но бывает, что его сложная структура и огромный объём микросервисов раздражают — если где-то сбоит, найти причину иногда сложнее, чем с обычным скриптом.
rc-скрипты в FreeBSD — простые, понятные, легко правятся руками. Минус — нет нативной параллельности запуска, и проверка состояния служб делается проще, так что для очень больших систем может не хватать гибкости.
launchd — в целом гибридный вариант с привычным описанием сервисов в XML, работает надёжно, но ограничен macOS и похожими системами. Его главный плюс — интеграция с системой на уровне, выпендривается и оптимизирует под конкретную ОС.
Если есть проблемы с запуском сервисов или зависания, первое — проверить логи и статус службы (journalctl для systemd, tail -f /var/log/messages для BSD, консоль macOS). Далее логично перезапустить, посмотреть зависимости. Если systemd слишком громоздкий — можно отказаться в пользу более лёгких альтернатив, но это обычно требует глубокого понимания.
Что лично меня напрягает — растущая сложность systemd и выпадение из классики, где всё можно было поправить простым скриптом. Но с другой стороны, современные требования иногда просто невозможно реализовать без такого инструмента.
Кто как смотрит на этот выбор? Кто остаётся приверженцем rc или запускает всё на systemd, и почему?