Как я могу узнать, начинается ли мой linux с systemd
или каким-либо другим пакетом?
2 ответа
Проверьте, какой процесс выполняется как PID 1. Вы можете сделать это, запустив ps aux | less
и прокручиваем наверх. Если у вас есть какой-то systemd, работающий под PID 1, значит, systemd запущен.
Или запустите systemctl
чтобы просмотреть список работающих модулей systemd.
Вы также можете проверить, что такое /sbin /init; file /sbin/init
сообщит вам, является ли он настоящим исполняемым файлом или символической ссылкой на исполняемый файл какого-либо другого пакета. Например, в окне systemd:
root@boxy / # file /sbin/init
/sbin/init: symbolic link to ../lib/systemd/systemd
Для получения дополнительной информации, проверьте это: https://en.wikipedia.org/wiki/Linux_startup_process
РЕДАКТИРОВАТЬ: Как отмечено в комментарии Deltab, а не с помощью ps aux | less
, ps 1
- лучший способ сделать это. Спасибо за разъяснение этого!
РЕДАКТИРОВАТЬ 2: Еще один способ увидеть, что именно у вас есть в вашей системе, - это набрать man init
и посмотреть, на какой странице man программы вы находитесь.
Я знаю, что это старый вопрос, но так как я просто задавал себе тот же вопрос - вот мой 2ct.
Лучшее решение, которое я придумал
ps --no-headers -o comm 1
Это возвращает либо systemd
либо init
и кажется надежным во всех дистрибутивах и выпусках Linux.
file /sbin/init
будет работать с помощью сопоставления с шаблоном. Вывод ps 1
не выглядит полезным, поскольку в некоторых дистрибутивах Linux он печатает 'init' (символическая ссылка), несмотря на использование systemd.
Debian 8
$ ps 1
PID TTY STAT TIME COMMAND
1 ? Ss 0:02 /sbin/init
$ file /sbin/init
/sbin/init: symbolic link to /lib/systemd/systemd
РЕЛ 7
$ ps 1
PID TTY STAT TIME COMMAND
1 ? Ss 7:46 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
$ file /sbin/init
/sbin/init: symbolic link to `../lib/systemd/systemd'
SLES 12
$ ps 1
PID TTY STAT TIME COMMAND
1 ? Ss 0:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
$ file /sbin/init
/sbin/init: symbolic link to `../usr/lib/systemd/systemd'
openSUSE 13.1
$ ps 1
PID TTY STAT TIME COMMAND
1 ? Ss 0:33 /sbin/init showopts
$ /sbin/init: symbolic link to `../usr/lib/systemd/systemd'