Как называется первый процесс, запускаемый ядром Linux и отвечающий за загрузку системы и управление процессами?

Ответ

Этот процесс называется init. Он всегда имеет PID (Process ID) = 1 и является предком всех остальных процессов в системе.

В современных дистрибутивах роль init выполняют различные init-системы:

  • systemd — стандарт для большинства современных дистрибутивов (RHEL/CentOS 7+, Ubuntu 16.04+, Debian 8+). Помимо запуска процессов, управляет сервисами (юнитами), точками монтирования, сокетами и т.д.
  • SysV init — традиционная система, использовавшаяся ранее, с последовательными runlevel и скриптами в /etc/init.d/.
  • OpenRC — используется в Gentoo и Alpine Linux.
  • runit — минималистичная система, популярная в некоторых специализированных дистрибутивах.

Основные обязанности init-процесса:

  1. Запуск системных сервисов и демонов, указанных в конфигурации.
  2. Перезапуск упавших критически важных сервисов.
  3. Усыновление "сирот" (orphan processes) — процессов, чьи родители завершились.
  4. Очистка системы при завершении работы (корректная остановка сервисов).

Чтобы узнать, какая init-система используется, можно выполнить:

ps -p 1 -o comm=

Эта команда выведет имя процесса с PID=1, например, systemd.

Ответ 18+ 🔞

А, ну это про то, с чего вся система начинается, да? Вот этот самый первый процесс, который как батя всех остальных. PID у него всегда единичка, как у царя в тюрьме, и все остальные процессы — его дети, внуки и правнуки, ебать мои старые костыли.

Раньше-то, в старые добрые времена, был один такой дедок — SysV init. Всё у него было по полочкам, runlevel'и, скрипты в /etc/init.d/. Но потом пришли молодые и говорят: «Дед, ты медленный, как черепаха в сиропе, и сложный, как инструкция к китайской дрели». И началась движуха.

Сейчас в основном на троне сидит systemd. Этот, бля, такой всеядный монстр, который не только процессы запускает, а ещё и сервисами рулит, сокеты слушает, точки монтирования контролирует — короче, овердохуища всего делает. Его везде пихают: в RHEL, Ubuntu, Debian. Некоторые на него орут, что он жирный и везде лезет, но что поделать — стандарт де-факто.

Но есть и другие ребята, которые не хотят под systemd'шное иго. В Gentoo, например, сидит OpenRC — более шустрый и модульный. В Alpine или каких-нибудь минималистичных дистрибутивах можно встретить runit — вообще аскет, только самое необходимое.

А что этот самый init-процесс вообще делает, кроме как сидит на PID 1 и важничает? Ну, во-первых, он запускает всё, что прописано в конфигах — сервисы, демоны, всю эту системную требуху. Во-вторых, если какой-то критически важный сервис вдруг накрылся медным тазом, init его перезапускает — терпения ноль ебать, работать надо. В-третьих, он усыновляет сирот — процессы, у которых родитель сдох. А ещё он главный по выключению: когда ты говоришь системе «иди на хуй», он корректно все сервисы останавливает, чтобы ничего не сломалось.

И как узнать, кто у нас тут главный? Да элементарно, чувак:

ps -p 1 -o comm=

Тыкаешь эту команду, и она тебе имя процесса выплюнет. Если увидишь systemd — ну, поздравляю, живёшь в современном мире. Если что-то другое — значит, ты либо старовер, либо любитель минимализма, ёпта.