Как проверить использует systemd ваша операционная система Linux?

Каждый основной дистрибутив Linux, включая Ubuntu Fedora, openSUSE и Arch, использует systemd по умолчанию.

Но есть много дистрибутивов, не использующих systemd, например Void Linux, который использует облегченный runit для лучшей производительности, или Devuan, который использует sysvinit на принципиально другой основе.

Проблема возникает, когда вы пытаетесь следовать какому-то учебнику или документации, а в них есть команды, специфичные для systemd или другой службы init.

И здесь вам нужно проверить, использует ли ваша Linux-система systemd или что-то другое.

Один из способов – проверить процесс с PID 1 (система init – это первый процесс, запускаемый в Linux-системе).

ps 1

Но его вывод может ввести в заблуждение, поскольку часто он показывает /sbin/init, который является просто мягкой ссылкой на реальный процесс init.

Если вы пройдете по этой символической ссылке, вы можете получить информацию о системе init. Для этого есть два способа:

  • Использование команды stat
  • Использование команды readlink

Начнем с первого варианта.

Эти методы были протестированы на 6 системах инициализации: Systemd, OpenRC, SysVnint, Busybox, runit и s6.

Метод 1: Проверьте, используется ли systemd, с помощью команды stat

Вот как вы можете использовать команду stat, чтобы узнать, какую систему init вы используете:

stat /sbin/init

Если вы используете дистрибутив с systemd, то он покажет вам следующий результат:

Но если вы используете что-то другое, кроме systemd, то он покажет имя init, если только вы не используете SysVnit, который покажет вам только init вместо sysvnit:

Метод 2: Проверка системы init с помощью команды readlink

В отличие от предыдущего метода, когда вы используете команду readlink, она выводит только имя системы init.

Так что если вы хотите узнать, используете ли вы Systemd или нет, просто используйте следующую команду:

readlink /sbin/init

Если вы используете службу OpenRC init, то она покажет следующий результат:

Но если вы используете SysVnit, то она покажет следующий результат:

Крошечный «скрипт», который я написал для вас

Другой способ – проверить, существует ли каталог /run/systemd/system или нет.

Самый простой способ узнать это – использовать команду if-else bash в терминале, которая проверит, используете ли вы дистрибутив с systemd или нет:

if [ -d /run/systemd/system ]; then echo "System is running systemd"; else echo "System is not running systemd"; fi
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен itsfoss.com

Похожие статьи

Комментарии (0)