Введение
В мире Linux и Unix-подобных систем исторически доминировала система инициализации SysVinit. Её процесс загрузки был последовательным и понятным: она запускала скрипты (обычно расположенные в /etc/rc.d/ или /etc/init.d/) по одному, в строгом порядке, определяемом симлинками в каталогах rcN.d.
Но с развитием Linux и увеличением сложности систем — недостатки SysVinit стали вполне очевидны:
Последовательный запуск: скрипты выполнялись один за другим. Если служба не зависела от другой — она всё равно ждала своей очереди, что замедляло загрузку.
Отсутствие контроля за процессами. Init только запускал скрипты, но не мог отслеживать состояние запущенных служб (упала? требует перезагрузки?).
Разрозненность логирования. Каждая служба вела логи «по-своему» (в /var/log/), не было какого-то единого централизованного интерфейса для просмотра логов.
Полагаю, именно эти проблемы привели к появлению альтернатив (Upstart, OpenRC), но именно systemd, представленный Леннартом Поттерлингом в 2010 году, стал неким «де-факто» стандартом для множества крупных дистрибутивов (Fedora, Debian, Ubuntu, Arch и др.). Он был разработан как кардинально новое решение для преодоления ограничений.
Читать