как узнать какая система инициализации используется в linux
linux-notes.org
Иногда интересно какая же инициализация используется на сервере и в моей статье «Система инициализации в Unix/Linux» я расскажу как можно узнать какая система инициализации используется на сервере.
Основные системы инициализации:
Команды по системам инициализации в Unix/Linux ОС:
Система инициализации в Unix/Linux
Существует несколько способов проверить это, сейчас я покажу как это сделать.
-=== СПОСОБ 1 — проверка PID процессов==-
Например, Ubuntu до версии 14 использовала систему инициализацию Upstart чтобы проверить это, выполните:
Например, Ubuntu 16 и CentOS 7 использовала систему инициализацию SystemD чтобы проверить это, выполните:
Или если используется Ubuntu 16, можно выполнить:
Или (если чтобы было красиво):
Например, CentOS 6 использовала систему инициализацию Upstart, но с init процессом и чтобы проверить это, выполните:
-=== СПОСОБ 2 — проверка файлов==-
Запускаем следующую команду:
Если на сервере используется init инициализация, то она отобразится при выводе. В противном случае — скажет что такой команды нет.
ИЛИ, можно выполнить:
Вот вам еще довольно стоящий пример:
-=== СПОСОБ 3 — с помощью ФС==-
Можно запустить следующую команду:
Команда что выше, проверяет exe симлинку в папке /proc/1. А собственно «1» – это PID 1-го процесса.
-=== СПОСОБ 4 — с помощью готового bash скрипта==-
И прописываем в него:
Можно добавить прав на исполнение:
И для запуска, юзаем:
-=== СПОСОБ 5 — с помощью пакетного менеджера==-
Если используете centOS/RedHat/Fedora/Suse, то можно выполнить:
Если используете Debian/Ubuntu/Mint/др, то можно выполнить:
-=== СПОСОБ 6 — с помощью lsof==-
Так же, можно выполнить:
-=== СПОСОБ 7 — с помощью ls и which==-
Вот и все. Если имеются другие примеры проверки инициализации, пишите в комментариях. Тема «Система инициализации в Unix/Linux» завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Система инициализации в Unix/Linux
Система инициализации в Unix/Linux
Иногда интересно какая же инициализация используется на сервере и в моей статье «Система инициализации в Unix/Linux» я расскажу как можно узнать какая система инициализации используется на сервере.
Основные системы инициализации:
sysvinit — Стиль SysVinit существовал еще со времен SystemV, которая была разработана еще в 1983 году. Это установило стандарт инициализации POSIX систем.
upstart — система инициализации ОС, которая управляет запуском демонов в течение загрузки системы, их остановку, а также управляет ими во время работы системы. Первоначально была разработана для дистрибутива Ubuntu, но затем стала использоваться и в других дистрибутивах Linux, например в Fedora (впоследствии была заменена systemd), как замена UNIX System V init.
systemd — это системный менеджер, (демон для инициализации других демонов в Linux), который пришел и почти заменил SysV. Основное отличие — распределенный запуск служб в процессе загрузки системы, что позволяло существенно ускорить запуск операционной системы.
launchd — система инциализации системы с открытым исходным кодом, используемая в ОС Mac OS X. Процесс имеет PID 1 и занимается тем, что запускает другие процессы и перезапускает их в случае сбоя, то есть выполняет функции init UNIX и Linux (в новых версиях Linux осуществляется переход на systemd).
Команды по системам инициализации в Unix/Linux ОС:
Система инициализации SysVinit
Система инициализации Systemd
Система инициализации в Unix/Linux
Существует несколько способов проверить это, сейчас я покажу как это сделать.
-=== СПОСОБ 1 — проверка PID процессов==-
Например, Ubuntu до версии 14 использовала систему инициализацию Upstart чтобы проверить это, выполните:
Например, Ubuntu 16 и CentOS 7 использовала систему инициализацию SystemD чтобы проверить это, выполните:
Или если используется Ubuntu 16, можно выполнить:
Или (если чтобы было красиво):
Например, CentOS 6 использовала систему инициализацию Upstart, но с init процессом и чтобы проверить это, выполните:
-=== СПОСОБ 2 — проверка файлов==-
Запускаем следующую команду:
Если на сервере используется init инициализация, то она отобразится при выводе. В противном случае — скажет что такой команды нет.
ИЛИ, можно выполнить:
Вот вам еще довольно стоящий пример:
-=== СПОСОБ 3 — с помощью ФС==-
Можно запустить следующую команду:
Команда что выше, проверяет exe симлинку в папке /proc/1. А собственно «1» – это PID 1-го процесса.
-=== СПОСОБ 4 — с помощью готового bash скрипта==-
И прописываем в него:
Можно добавить прав на исполнение:
И для запуска, юзаем:
-=== СПОСОБ 5 — с помощью пакетного менеджера==-
Если используете centOS/RedHat/Fedora/Suse, то можно выполнить:
Если используете Debian/Ubuntu/Mint/др, то можно выполнить:
-=== СПОСОБ 6 — с помощью lsof==-
Так же, можно выполнить:
-=== СПОСОБ 7 — с помощью ls и which==-
Вот и все. Если имеются другие примеры проверки инициализации, пишите в комментариях. Тема «Система инициализации в Unix/Linux» завершена.
Системы инициализации Linux
В операционной системе Linux и других системах семейства Unix после завершения загрузки ядра начинается инициализация Linux системы, сервисов и других компонентов. За это отвечает процесс инициализации, он запускается ядром сразу после завершения загрузки, имеет PID 1, и будет выполняться пока будет работать система.
Процесс инициализации запускает все другие процессы, которые должны быть запущены, это родительский процесс для всего, что выполняется в системе. Другие процессы могут тоже создавать дочерние процессы, но если родительский процесс завершается, для его дочерних процессов родительским становится процесс инициализации.
Системы инициализации Linux
За время развития операционных систем были созданы различные системы инициализации Linux. В разных дистрибутивах использовались разные системы. В этой статье мы рассмотрим лучшие системы инициализации, которые вы можете сейчас использовать. Мы начнем с более старых систем с меньшим функционалом, чтобы понять с чего все начиналось, затем подойдем к более новым, созданным в последнее время.
1. System V Init
Почти все дистрибутивы Linux изначально использовали SysV. Исключением была только Gentoo, в которой использовалась собственная система инициализации и Slackware, с инициализацией в стиле BSD.
Основные возможности SysV:
Никакой параллельной загрузки, системы зависимостей, запуска по требованию и автоматического запуска здесь не было и в помине.
С момента ее разработки прошло много лет и из-за некоторых недостатков были разработаны другие системы для ее замены, они хоть и имели новые функции и были более эффективны, но они были по-прежнему совместимы с SysV.
2. OpenRC
Кроме стандартных возможностей SysV, здесь поддерживается также:
По сравнению с SysV тут появилось много новых возможностей, но все еще не все те, что нужны для оптимальной работы системы.
3. Systemd
Systemd очень сильно отличается от всех существующих систем инициализации, тем как она работает с сервисами, и даже конфигурационными файлами сервисов. Совместимости со скриптами SysV нет, их нужно преобразовать в linux systemd unit файлы.
Вот ее основные особенности:
4. Runinit
Здесь есть некоторые интересные особенности, которых нет в других системах инициализации:
5. Upstart
Это гибридная система инициализации, она использует как SysV скрипты запуска, так и файлы служб Systemd. Вот ее самые заметные особенности:
Большинство ее возможностей работают благодаря интеграции с системой инициализации Systemd. В последнее время всё меньше используются скрипты SysV init и всё больше применяются юнит файлы Systemd. Рано или поздно Systemd вытеснит и полностью заменит Upstart в Ubuntu.
Выводы
Как я уже говорил, система инициализации запускает и управляет всеми другими процессами в системе Linux. SysV до недавнего времени была основной системой инициализации в большинстве дистрибутивов Linux, но из-за некоторых своих недостатков для нее было разработано несколько замен, в том числе Systemd.
Какие системы инициализации Linux используются в вашем дистрибутиве? В списке обозначены не все существующие системы, какую из них нужно добавить в список? Напишите в комментариях!
Системы инициализации Unix и Linux после SysV
Daniel J. Bernstein математик и специалист по криптографии, автор популярного MTA qmail и множества других менее известных программ, среди которых выделяется daemontools. Для множества современных систем инициализации daemontools являлся примером и вдохновителем. Прошу внутрь для того, чтобы познакомиться с самой элегантной, простой и влиятельной системой управления службами в Unix / Linux.
DJB и Daemontools
Уравнения Максвелла для управления процессами на Unix ОС.
Внимание — не следует путать daemontools написанный DJB с программой-тезкой DAEMON Tools для монтирования iso образов и создания виртуальных CD/DVD дисков.
Daniel J. Bernstein создал свою программу в 1997 г. Последний стабильный релиз был в июле 2001 г.
Сейчас, когда в Linux сообществе наблюдается раскол из-за systemd, самое время вспомнить каким может быть настоящий инит в духе принципов и философии Unix. В этом смысле дзен-программист DJB является воплощением минимализма и простоты, а бритва Оккама у него встроена в клавиатуру. Его решения основательны и элегантны, на этом фундаменте он строит надежное, безопасное ПО, которое потребляет минимальное количество ресурсов ОС. Вот некоторые особенности его стиля работы.
Почему такие странные принципы, и еще с учетом того, что автор исповедует их фанатично? Строительный материал daemontools — директории, процессы, FIFO, исполняемые файлы. Это дает массу преимуществ в разработке и отладке приложения:
Сравнительная таблица DT
features | inittab | ttys | init.d | rc.local | /service |
---|---|---|---|---|---|
Easy service installation and removal | No | No | Yes | No | Yes |
Easy first-time service startup | No | No | No | No | Yes |
Reliable restarts | Yes | Yes | No | No | Yes |
Easy, reliable signalling | No | No | No | No | Yes |
Clean process state | Yes | Yes | No | No | Yes |
Portability | No | No | No | No | Yes |
Второй пункт менее убедителен в том смысле, что конечно же проще когда сервис и в первый раз стартует автоматически, но в остальных системах инициализации и управления службами достаточно одной команды для первого старта службы.
Возможность перезапустить завершившийся сервис в автоматическом режиме была на тот момент момент большим шагом вперед. На сегодняшний день это уже в порядке вещей.
Последние две позиции кажутся несколько надуманными, не совсем понятно как daemontools восстанавливает состояние процесса в отличие от остальных инитов. Непонятно также, почему автор только свою программу считает переносимой на другие платформы.
Структура DT
Внутреннее устройство daemontools, граница обведена красной прерывистой линией.
Теперь немного о принципах работы программы.
Синтаксис команды svc и опции представлены ниже.
Попробуем добавить сервис sshd.
В таком случае структура директорий может выглядеть так.
После того, как svscan пробежится по этому списку мы получим дерево процессов, в котором процессы service следят за сервисами и логированием.
Зависимости между службами
Несмотря на то, что программа не поддерживает зависимости между различными службами, есть способ добиться учета зависимостей, используя для этого svok следующим образом.
В данном примере программа на python запустится только в том случае, если стартовал postgres, если же последний пока не поднялся, скрипт завершится и затем через определенно время svscan его перезапустит. Когда же postgres наконец поднимется, python запустит веб приложение.
Квотирование сервиса
С помощью утилиты softlimit можно ограничить предоставленные данному сервису ресурсы.
Логирование
Из другого терминала запускаем:
Последователи daemontools
Мало кто сегодня использует DT, но можно смело сказать, что Daniel J. Bernstein стал для многих примером, а дело его живет и здравствует. Вот неполный список его последователей.
Системы инициализации Linux. Сравнение SysV и systemd
Обновл. 12 Июл 2021 |
В Linux существуют специальные службы — демоны — работающие в фоновом режиме и обслуживающие другие программы. Инициализация и управление демонами происходит с помощью специального процесса инициализации. Ядро, сразу после своей загрузки, запускает процесс инициализации, который приводит к запуску всех необходимых служб и программ. Для этого считывается соответствующий файл конфигурации и на основе описанных в нем параметров начинается запуск системы. Данный процесс инициализации является главным (или «родительським») процессом, который переводит систему из состояния «ядро запущено» к состоянию «система готова к работе».
Примечание: В системе инициализации SysV главным процессом является процесс init, а в системе инициализации systemd — (одноименный) процесс systemd.
С течением времени в Linux появилось большое разнообразие систем инициализации. В данной статье мы рассмотрим наиболее популярные из них, а также сравним SysV и systemd.
Спор вокруг систем инициализации в Linux
System V init (или просто «SysV») — это система инициализации, которая существует со времен операционной системы System V, которая была выпущена в 1983 году. SysV оставалась системой инициализации в течение почти трех десятилетий (за некоторыми исключениями). Многие IT-специалисты и программисты в силу своей привычки не хотели отказываться от SysV, да и к тому же она была очень простой для понимания.
Проблема с SysV заключалась в том, что в её основе лежали концепции, существовавшие много лет назад. SysV не хватало возможности нативно обрабатывать многие вещи, такие как: обнаружение съемных носителей, корректное обнаружение аппаратного обеспечения и загрузка встроенного ПО, загрузка различных модулей и пр. Кроме того, при использовании данной системы, инициализация процессов происходит последовательно, т.е. одна задача запускается только после успешного завершения предыдущей. Часто это приводило к задержке и длительному времени загрузки. Задачи, подобные монтированию файловых систем, выполняются один раз во время загрузки, после чего «забываются». Но такого подхода недостаточно для автоматизированного управления сервисами, требующими к себе постоянного внимания.
В попытке привнести больше возможностей в процесс инициализации Linux-систем, компания Canonical в 2006 году вместе с релизом Ubuntu 6.10 (Edgy Eft) выпускает систему инициализации Upstart, которая с самого начала разрабатывалась с учетом обратной совместимости. Она может запускать демоны без каких-либо изменений в их скриптах запуска.
Другой системой инициализации, восходящей своими корнями к операционной системе 4.4BSD, является rc.init. Она применяется в таких дистрибутивах, как: FreeBSD, NetBSD и Slackware. В 2007 году разработчики Gentoo выпустили улучшенный вариант данной системы инициализации, сделав её модульной и назвав OpenRC. Большинство других дистрибутивов Linux исторически продолжало использовать SysV.
В 2010 году инженеры компании Red Hat Леннарт Пёттеринг и Кей Сиверс приступили к разработке новой системы инициализации — systemd, которая разрабатывалась с учетом недостатков, имеющихся в SysV. В состав systemd, помимо прочего, также входят и различные пакеты, утилиты и библиотеки, позволяющие производить параллельный запуск процессов, сокращая тем самым время загрузки системы и количество необходимых вычислений. Весной того же года Fedora 15 стала первым дистрибутивом, в котором по умолчанию использовалась система инициализации systemd. После чего, на протяжении следующих трех лет, большинство дистрибутивов массово перешли на systemd.
Но, если все остальные дистрибутивы отдают предпочтение systemd и считают её лучшей системой инициализации, как для предприятий, так и для любителей, почему так много споров вокруг нее?
systemd, по сравнению с SysV и Upstart, содержит большое количество различных улучшений, а также предлагает и другие компоненты, имеющие более тесную интеграцию с системой, с помощью которых разработчики могут уменьшить объем выполняемой работы. Что в этом плохого? Ну, поскольку разработчики создают программное обеспечение, которое зависит от systemd и/или от любой из её многочисленных служб (journald, udevd, consoled, logind или networkd), то такое ПО становится менее совместимым с системами, в которых systemd не применяется. По мере того, как количество служб, предоставляемых проектом systemd, продолжает расти, systemd сама становится все более зависимой от них.
В результате systemd становится самостоятельной платформой, и её повсеместное распространение непреднамеренно препятствует разработке программного обеспечения, которое является переносимым и совместимым с операционными системами, не поддерживающими systemd. Но действительно ли всё так печально? Конечно, нет. Прежде всего, это проект с открытым исходным кодом, и у людей есть выбор: использовать его или нет. Пользователи и разработчики могут извлечь выгоду из наличия нескольких конкурирующих систем инициализации, и нет вины systemd в том, что основные дистрибутивы переключились на нее из-за её плюсов.
Системы инициализации Linux
System V init (или просто «SysV») — это система инициализации, которая существует со времен операционной системы System V.
Примечание: System V — это первая коммерческая UNIX-подобная операционная система, которая была выпущена в 1983 году.
Процесс init (от англ. «initialization») — это первый запускаемый в системе процесс (не считая загрузки ядра), который является родителем (прямым или косвенным) всех других запущенных процессов, и которому присваивается PID=1.
Если процесс init по каким-либо причинам не смог стартовать, то не произойдет запуска последующих процессов и система перейдет в особое (вызванное появлением критической ошибки) состояние ядра, называемое Kernel Panic.
В SysV имеется шесть состояний системы, известных как уровни выполнения (runlevels), и всем процессам и службам сопоставляется определенный уровень выполнения. Данная система инициализации также предлагает простые в использовании команды и методы для управления уровнями выполнения и связанными с ними службами.
Runlevel 0 — завершает работу системы.
Runlevel 1 — однопользовательский режим работы. Чаще всего используется в целях обслуживания и выполнения других административных задач. Этот уровень также может называться Runlevel S (от англ. «Single-user»). Если вам когда-либо приходилось сбрасывать пароль на Linux, то вы вероятно уже пользовались этим режимом.
Runlevel 2 — многопользовательский режим работы (англ. «multi-user») без поддержки сетевых служб.
Runlevel 3 — многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.
Runlevel 4 — не используется. Пользователь может настраивать этот уровень исходя из его целей.
Runlevel 5 — схож с режимом 3, но здесь запускается графический интерфейс. В этом режиме работают десктопные версии Linux.
Runlevel 6 — перезагружает систему.
Значения для каждого уровня выполнения варьируются в зависимости от вашего дистрибутива Linux. Есть дистрибутивы (например, Ubuntu), которые используют Runlevel 2 для многопользовательского графического режима с поддержкой сети, другие дистрибутивы (например, Fedora) для того же самого используют Runlevel 5.
В операционной системе, использующей SysV, ядро запускает файл /sbin/init, который, в свою очередь, загружает параметры и выполняет директивы, определенные в файле конфигурации — /etc/inittab. Этот файл задает уровни выполнения для всей системы, определяет, для каких терминалов следует создавать getty (процессы инициализации терминала), запускает процессы входа в терминал, запускает скрипт /etc/init.d/rcS, а также влияет на порядок выполнения других runlevel-скриптов.
Запуск служб происходит в заранее определенной последовательности. Следующий скрипт в цепочке запуска выполняется только в том случае, если был выполнен предыдущий скрипт. Если во время своего выполнения скрипт зависнет, то следующему скрипту придется ждать, пока у текущего не истечет время ожидания. Данная непредвиденная задержка исполнения скрипта делает весь процесс инициализации системы менее эффективным и, в конечном счете, более медленным.
Кроме этого, у SysV есть проблемы с т.н. «hot-plug» подключением устройств: если операционная система уже загрузилась и находится в рабочем состоянии, и вы подключаете к ней USB-устройство, то SysV не распознает данное USB-устройство.
В ОС, использующей систему инициализации SysV, обычно присутствует специальная программа, используемая для управления службами во время работы системы. Вы можете проверить состояние службы или всех служб, а также запустить или остановить службу при помощи следующих команд:
# service status (отображение статуса конкретной службы)
# service start|stop (запуск/остановка конкретной службы)
systemd
systemd — это относительно новая система инициализации Linux, представляющая собой набор утилит для запуска и управления всеми типами процессов и служб (а также устройствами, сокетами, точками монтирования, областью подкачки, модулями и пр.).
Основные цели проектирования данной системы инициализации, по словам Леннарта Пёттеринга, ведущего разработчика systemd, заключаются в том, чтобы «запускать меньше, распараллеливать больше». Это означает, что вы запускаете только те процессы, которые сто процентов необходимы для приведения системы в рабочее состояние, и одновременно выполняете как можно больше таких задач. Все вызовы, которые раньше (при использовании SysV) были «размазаны» по множеству различных скриптов, теперь выполняются одним файлом — lib/systemd/systemd. Первоначально systemd выпускалась под лицензией GNU GPL, но в дальнейшем её сменили на GNU LGPL.
Unit — это модуль, отвечающий за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому подобные ресурсы.
Target — это аналог уровней выполнения из SysV, состоящий из нескольких unit-ов.
systemd выполняет unit для достижения target. Инструкции для каждого устройства находятся в каталоге /lib/systemd/system/.
Для управления службами в systemd применяется специальная утилита — systemctl. Например:
# systemctl enable sshd (включение sshd)
# systemctl start sshd (запуск sshd)
# systemctl stop sshd (остановка sshd)
# systemctl status sshd (отображение состояния sshd)
# systemctl list-units (отображение списка модулей)
Еще одной важной программой в наборе инструментов systemd является утилита journalctl. Она позволяет просматривать и управлять демоном логов journald. Лог-файл systemd является двоичным файлом, и использование journalctl сильно упрощает работу с ним. Вот несколько примеров:
# journalctl –all (отображение содержимого всего лог-файла)
Плюсы системы инициализации systemd:
Новый, современный и эффективный дизайн.
Более простой процесс загрузки.
Параллельная обработка задач при загрузке системы.
Простой синтаксис unit-файлов.
Возможность удаления дополнительных компонентов.
Низкий уровень потребления ресурсов.
Улучшен механизм зависимостей.
Инструкция инициализации процессов хранится в файле конфигурации, а не в скрипте оболочки.
Планирование задач с использованием systemd Calendar Timers.
Ведение лог-файла с помощью службы journald.
Лог-файлы хранятся в двоичных файлах.
Состояние systemd может быть сохранено для последующего вызова в будущем.
Отслеживание исполняемого процесса через механизм контейнеризации cgroup.
Вход пользователей в систему управляется с помощью systemd-logind.
Улучшенная интеграция с GNOME для обеспечения совместимости.
Минусы системы инициализации systemd:
Всё собрано в одном месте.
Не соответствует стандартам POSIX.
Дистрибутивы Linux | Интеграция |
Fedora | Да (это первый дистрибутив, перешедший на systemd). |
Arch | Да. |
RHEL | Да. |
CentOS | Да. |
Debian | Да, начиная с 8-й версии. |
OpenSUSE | Да. |
Slackware | Нет. |
Ubuntu | Да. |
Upstart
Upstart — это гибридная система инициализации (могут использоваться как скрипты запуска SysV, так и сценарии systemd), созданная разработчиками дистрибутива Ubuntu в качестве замены системы инициализации SysV. В отличие от SysV, которая создавалась для работы в статическом окружении, Upstart предназначалась для работы в более гибком окружении.
По сравнению с SysV, в Upstart можно выделить три основных преимущества, а именно: управление службами на основе событий (вместо уровней выполнения), асинхронный запуск служб и автоматический перезапуск аварийно завершенных служб.
Основное отличие от SysV заключается в том, что Upstart реализует управляемую событиями модель, которая позволяет асинхронно реагировать на основные этапы запуска служб по мере их достижения. Для этого в Upstart существуют задания, прописанные в файлах в /etc/init/*.conf, целью которых является выполнение секции скрипта, ответственной за создание процесса. Таким образом, инициализация системы может быть выражена в виде последовательного набора правил «создавать процесс X при наступлении события Y».
Когда происходит какое-либо событие, Upstart обнаруживает это событие и вносит необходимые изменения. Событием может быть всё, что связано с различными состояниями системы, например: USB-накопитель подключается/извлекается из системы или запускается/останавливается служба.
Но и у данной системы инициализации есть свои минусы. Так как в её основе заложена событийная модель реагирования, то вместо выполнения абсолютного минимального объема работы, необходимого для приведения системы в рабочее состояние, при срабатывании события Upstart выполняет все задания, которые могут последовать за ним. Например, если запустилась сеть, это еще не значит, что NFS (сокр. от «Network File System») также должна запуститься. На самом деле, корректная последовательность является противоположной: когда пользователь запрашивает доступ к общему ресурсу NFS, система должна проверить, что сеть запущена и работает.
Для управления уровнем запуска различных служб в Upstart применяется специальная утилита — initctl, например:
$ initctl status (отображение состояния службы)
$ initctl list (отображение списка служб)
# initctl start|stop (запуск/остановка службы)
OpenRC
OpenRC — это кроссплатформенная система инициализации на основе зависимостей, которая совместима с SysV. Несмотря на то, что OpenRC вносит некоторые улучшения в SysV, она не является её абсолютной заменой.
Может работать во многих дистрибутивах Linux, включая Gentoo.
Скрипты инициализации с отслеживанием состояния.
Ограничение ресурсов для каждой службы.
Загрузка на основе зависимостей.
Запускается в виде демона.
Параллельный запуск служб и многое другое.
runit
runit — также кроссплатформенная система инициализации, которая может работать на Solaris, операционных системах семейства BSD и macOS. В целом очень похожа на SysV. Может использоваться сама по себе или же в качестве альтернативы для SysV, systemd, а также в сочетании с OpenRC.
К основным преимуществам runit относятся:
Быстрая загрузка и выключение системы.
Логирование вывода процесса и ротация логов.
Автоматическое выключение и запуск сервисов при появлении новых сервисов в списке, либо удалении старых из списка.
Возможность ведения нескольких независимых списков сервисов одновременно (например, для каждого пользователя отдельно и для системы в целом).
Сравнение SysV и systemd
Функции | SysV | systemd |
Зависимость D-Bus | Нет | Да |
Управление устройствами с помощью udev | Нет | Да |
Активация по таймеру | cron/at | Проприетарная |
Управление квотами | Нет | Да |
Автоматическая обработка зависимостей служб | Нет | Да |
Завершение процессов пользователей при выходе из системы | Нет | Да |
Управление пространством подкачки | Нет | Да |
Интеграция SELinux | Нет | Да |
Поддержка шифрованных HDD | Нет | Да |
Загрузка статических модулей ядра | Нет | Да |
Графический интерфейс пользователя (GUI) | Нет | Да |
Перечисление всех дочерних процессов | Нет | Да |
Совместимость с SysV | Да | Да |
Интерактивная загрузка | Нет | Да |
Переносимость на отличную от x86 архитектуру процессора | Да | Нет |
Параллельный запуск служб | Нет | Да |
Ограничение ресурсов для каждой службы | Нет | Да |
Легко расширяемый скрипт автозагрузки | Да | Нет |
Раздельные код и файл конфигурации | Да | Нет |
Автоматический расчет зависимостей | Нет | Да |
Подробный вывод отладочной информации | Да | Нет |
Количество файлов | 75 файлов | 900 файлов + Glib + D-Bus |
Как определить какая система инициализации у меня?
Способ №1: Команда ps
С помощью команды ps мы можем отобразить информацию об активном процессе, а с помощью команды grep указать необходимые фильтры для определения текущей системы инициализации:
Fedora 34 Workstation
Как вы можете видеть, в Debian и Fedora используется система инициализации systemd.
В случае использования системы инициализации SysV, вывод команды будет следующий:
Если же у вас используется система инициализации Upstart, то вы увидите:
Способ №2: Команда rpm
rpm (сокр. от «Red Hat Package Manager») — это мощная консольная утилита управления пакетами в дистрибутивах RHEL, CentOS, Fedora, openSUSE и Mageia. Команда rpm позволяет устанавливать, обновлять, удалять, запрашивать и проверять программное обеспечение.
Чтобы узнать, какая система инициализации установлена, нужно выполнить следующую команду:
Примечание: /usr/sbin/init или /sbin/init — это исполняемый файл, запускающий систему инициализации SysV. По соображениям совместимости при установке systemd файл /sbin/init является псевдонимом (или символьной ссылкой) исполняемого файла системы инициализации systemd.
Fedora 34 Workstation
В случае использования системы инициализации SysV, вывод будет следующий:
В случае использования системы инициализации Upstart, вывод будет следующий:
Важное примечание
Таким образом, в нашей ОС используется именно systemd.
Поделиться в социальных сетях: