- Автор темы
- #1
pisula
Начинающий
- 7
- 0
Привет всем, кто когда-либо правил конфиги в /etc/rc.d/ и с ностальгией вспоминает простоту скриптов в /etc/init.d/.
Если вы в последние лет десять заходили в любой линуксовый чат и роняли фразу «systemd», можно было сразу надеть каску — начнется холивар. В 2026 году уже очевидно, что systemd окончательно и бесповоротно победила. Её нет разве что в специфичных дистрибутивах для энтузиастов, на роутерах и на старых серверах, которые «работают — и не трогай». Но споры не утихают. Давайте попробуем разобраться почему, без фанатизма и с долей самоиронии.
И тут появилась systemd со своим лозунгом «давайте приведем всё к единому стандарту и сделаем это быстро».
Systemd — это как современный автомобиль с кучей электроники. Его нельзя починить в поле с помощью гаечного ключа и изоленты, зато он предлагает невиданный ранее комфорт, безопасность и функциональность. И да, время от времени он будет глючить так, что дилерский сервис разведет руками.
Но если вам нужен надежный трактор для определенной задачи, вы все еще можете купить карбюраторный экземпляр с простой механической начинкой (читай: OpenRC). Просто не ждите от него функций автопилота и парковочных ассистентов.
Жду ваших воинственных и не очень историй. Особенно про те случаи, когда systemctl restart спасал (или губил) ваш день.
Если вы в последние лет десять заходили в любой линуксовый чат и роняли фразу «systemd», можно было сразу надеть каску — начнется холивар. В 2026 году уже очевидно, что systemd окончательно и бесповоротно победила. Её нет разве что в специфичных дистрибутивах для энтузиастов, на роутерах и на старых серверах, которые «работают — и не трогай». Но споры не утихают. Давайте попробуем разобраться почему, без фанатизма и с долей самоиронии.
Краткая история войны: от простого к сложному
Раньше (во времена SysV init) всё было понятно, как кирпич:- init — процесс №1.
- Запускает скрипты из /etc/rc.d/ по алфавиту.
- Скрипты — это просто bash-файлы, которые можно открыть, прочитать и, при должной сноровке, починить.
- Параллельный запуск? Что это? Мы запускаем всё последовательно, как боги завещали.
И тут появилась systemd со своим лозунгом «давайте приведем всё к единому стандарту и сделаем это быстро».
Чем systemd всех покорила (даже тех, кто этого не признает)
Несмотря на всю критику, она принесла реальные и осязаемые плюсы, которые оценили даже в консервативных серверных дистрибутивах вроде RHEL:- Скорость загрузки. Параллельный запуск сервисов с учетом зависимостей — это не маркетинг. Это реально работает. Система грузится заметно быстрее.
- Единая конфигурация. Вмере кучи bash-скриптов разного качества — единые .service и .socket файлы в одном стиле. Научился работать с одним — разберешься и с другими.
- Встроенный супервизор процессов. Раньше для того, чтобы сервис автоматически перезапускался при падении, приходилось ставить supervisord или monit. Теперь это нативно прописывается парой строк в юните. Мелочь, а приятно.
- Централизованное управление логами через journalctl. Возможность в реальном времени следить за логами всех сервисов, фильтровать по времени, юниту или уровню ошибки — мощнейший инструмент для диагностики.
- Контроль за ресурсами (cgroups). Systemd с самого начала тесно интегрирована с контрольными группами ядра. Это позволяет легко ограничивать сервисы по памяти, CPU и дисковому вводу-выводу прямо в конфиге сервиса.
А что же всех так бесит? Причины ненависти
Ладно, плюсы ясны. Но почему же столько людей до сих пор говорят о ней с раздражением? Причины — не только технические.- Нарушение философии Unix. Классический принцип «делай одну вещь и делай её хорошо» systemd нарушает с размахом. Это не просто система инициализации. Это и менеджер логов, и менеджер сетей (networkd), и планировщик заданий (timers), и даже инструмент для приветствия пользователя (getty). Монолит в мире микросервисов. Многих это отталкивает принципиально.
- Сложность и «магия». Раньше, чтобы понять, почему не стартует сервис, ты открывал bash-скрипт и шагал по строчкам. Теперь же приходится разбираться в собственном языке конфигурации, смотреть зависимости через systemctl list-dependencies, копаться в journalctl. Прозрачность уменьшилась, порог входа вырос.
- Жесткая привязка к Linux. Хотите портировать свою систему на *BSD или какой-нибудь Hurd? Со systemd это практически невозможно. Это сознательный выбор разработчиков, но он лишает сообщество гибкости.
- «Баг или фича?» Нетривиальное поведение. Например, известная история с TimeoutStopSec, когда сервис при остановке не убивается жестко, а уходит в особое состояние, или сложности с запуском в собственных namespace. Порой поведение systemd неочевидно даже для опытных админов.
Что в 2026? Альтернативы живы, но в нишах
Да, война проиграна. Но альтернативы не умерли — они ушли в экосистемы, где их принципы востребованы:- OpenRC — царь в мире Gentoo и Alpine Linux. Легковесная, модульная, следует философии Unix. Идеально для систем, где контроль и простота важнее скорости.
- runit — минималистичный и надежный демон-супервизор. Его до сих пор обожают за простоту в некоторых минималистичных дистрибутивах и Docker-образах.
- s6 — сложная, но невероятно мощная иерархическая система инициализации для тех, кто готов разобраться. Культовый статус в нишевых сообществах.
Systemd — это как современный автомобиль с кучей электроники. Его нельзя починить в поле с помощью гаечного ключа и изоленты, зато он предлагает невиданный ранее комфорт, безопасность и функциональность. И да, время от времени он будет глючить так, что дилерский сервис разведет руками.
Но если вам нужен надежный трактор для определенной задачи, вы все еще можете купить карбюраторный экземпляр с простой механической начинкой (читай: OpenRC). Просто не ждите от него функций автопилота и парковочных ассистентов.
Жду ваших воинственных и не очень историй. Особенно про те случаи, когда systemctl restart спасал (или губил) ваш день.