Systemd — это широко используемый программный пакет для Linux, который также содержит init (также известный как «инициализация») — первый процесс, запускаемый при загрузке системы Linux.
Это мощная программа, которая предлагает множество готовых функций и возможностей, что делает ее «мусорным ПО». Те, кому она не нравится, предпочитают использовать другие системы Linux с другими инициализаторами.
Вот несколько примеров: OpenRC init, SysVinit, Upstart и т. д. Поскольку существует несколько вариантов init, на рынке представлены различные дистрибутивы Linux с разными вариантами init.
Интересно, что в популярных дистрибутивах Linux, таких как Debian, Ubuntu, RedHat, Fedora, AlmaLinux, Arch, Manjaro и openSUSE, по умолчанию используется systemd.
Но опять же, существует множество дистрибутивов без systemd, таких как Void Linux и Devuan, в которых используются runit (легкая система инициализации) и sysvinit.
Если вас не интересует какой-то конкретный дистрибутив Linux с определенным инициализатором, то, возможно, вам не стоит беспокоиться о том, на чем работает ваша система, до тех пор, пока вам не понадобится выполнить определенную команду, например systemctl, которая должна работать только в дистрибутивах Linux на основе systemd.
В этой статье мы расскажем о различных способах узнать, на каком ядре работает ваша система.
Как проверить, работает ли ваша система Linux на Systemd
Изначально первым был оригинальный init-процесс Linux, известный как «init». Позже, когда на рынке появились различные варианты init-процессов, каждый из них был связан с оригинальным init-процессом с помощью символических ссылок.
Чтобы получить общее представление, выполните следующую команду, которая выведет список первого процесса, то есть вашего init-процесса.
ps 1
Выходной сигнал:
PID TTY STAT TIME COMMAND 1 ? Ss 0:02 /sbin/init auto noprompt splash
Если вы посмотрите на приведенный выше вывод, то заметите, что первым процессом является /sbin/init, что сбивает с толку многих пользователей Linux, заставляя их думать, что их система Linux работает на init, хотя это не так.
/sbin/init — это символическая ссылка на реальный процесс init в большинстве современных систем Linux, который можно найти, пройдя по символической ссылке с помощью одной из двух следующих команд: команда stat и команда readlink.
Итак, давайте с помощью первой команды определим, на каком init-процессе работает ваша система Linux.
Способ 1. Узнайте, какая система Linux работает на Systemd, с помощью команды stat
Откройте терминал и выполните следующую команду, чтобы определить, какую систему инициализации вы используете.
stat /sbin/init
Выходной сигнал:

Если ваша система Linux работает на базе systemd, будет выведено /lib/systemd/systemd. В противном случае, если используется другая система инициализации, будут выведены ее названия, например /sbin/init (для SysVinit) или /usr/bin/openrc-init (для OpenRC init).
Способ 2. Найдите свою систему Linux, работающую на Systemd, с помощью команды readlink
Команда readlink работает так же, как и предыдущая, за исключением того, что вместо вывода нескольких элементов она выводит только содержимое символической ссылки, на которую указывает, благодаря чему вывод получается понятным и простым для восприятия.
Чтобы узнать, используете ли вы Systemd, просто выполните следующую команду:
readlink /sbin/init
Выходной сигнал:
/lib/systemd/systemd <---------------------------Running on systemd
Приведенный выше вывод указывает на то, что текущая система работает на базе systemd.
Дополнительные советы!
Есть несколько дополнительных способов определить, какая система инициализации запущена в вашей системе. Например, можно использовать саму команду ps. Просто выполните любую из следующих команд, и она покажет, какая система инициализации используется в данный момент.
ps -p 1
или
ps --no-headers -o comm 1
Выходной сигнал:
ps -p 1
ps --no-headers -o comm 1
Принцип работы этой команды довольно прост: она ищет процесс с PID 1, то есть процесс инициализации, и получает название команды. В выводе обычно указывается, какая система инициализации используется.
Кроме того, вы можете использовать команду ls для определения своей системы инициализации. Например, если выполнить следующую команду, она выведет систему инициализации.
ls -l /sbin/init
Выходной сигнал:
lrwxrwxrwx 1 root root 20 Sep 19 22:27 /sbin/init -> /lib/systemd/systemd <------------------- Running on systemd