Самый надежный способ - посмотреть, какой процесс запущен с PID 1:
ps -p 1 -o comm=
# Или альтернативно:
systemctl --version >/dev/null 2>&1 && echo "systemd" || echo "other"
Ожидаемый вывод для systemd:
systemd
init
или другие названия указывают на альтернативные системыSystemd создает специальную директорию:
ls -ld /run/systemd
drwxr-xr-x 20 root root 580 May 15 10:00 /run/systemd
Проверка параметров ядра:
cat /proc/cmdline | grep systemd
Попытка выполнить команду управления:
if command -v systemctl >/dev/null; then
echo "systemd присутствует"
else
echo "systemd отсутствует"
fi
mount | grep cgroup | grep systemd
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
ls -l /sbin/init
lrwxrwxrwx 1 root root 20 Apr 5 2023 /sbin/init -> /lib/systemd/systemd
journalctl -b 2>/dev/null || echo "journalctl не доступен - нет systemd"
stat /proc/1/exe | grep systemd
rpm -qf /usr/lib/systemd/systemd
cat /etc/os-release | grep NAME
#!/bin/bash
SYSTEMD_PID=$(ps -p 1 -o comm=)
if [ "$SYSTEMD_PID" = "systemd" ]; then
echo "Система использует systemd"
echo "Версия: $(systemd --version | head -n1)"
elif [ -x "$(command -v systemctl)" ]; then
echo "systemd установлен, но не как init-система"
else
echo "systemd не используется (используется $SYSTEMD_PID)"
fi
Основные признаки systemd:
systemd
с PID 1systemctl
/run/systemd
journalctl
для просмотра логовМетоды проверки:
Важно помнить:
Для DevOps практики: