Как называется самый первый процесс, запускаемый в Linux?

Ответ

Самый первый процесс, которому ядро Linux присваивает PID 1, исторически назывался init. В современных дистрибутивах его роль выполняют системы инициализации:

  • systemd: Стандарт для большинства современных дистрибутивов (RHEL, Ubuntu, Debian).
  • runit, OpenRC: Используются в некоторых lightweight-дистрибутивах (Void Linux, Alpine).

Роль процесса с PID 1:

  1. Инициализация системы: Монтирование файловых систем, запуск сервисов.
  2. Управление сервисами: Запуск, остановка, перезагрузка демонов.
  3. Перезапуск завершившихся демонов.
  4. Прием и обработка сиротских процессов (zombie reaping).

Проверка:

ps -p 1
# Вывод: PID TTY      STAT   TIME COMMAND
#         1 ?        Ssl    0:05 /usr/lib/systemd/systemd

# Просмотр дерева процессов, запущенных от systemd
systemctl status
pstree -p 1

В контексте контейнеров (Docker) PID 1 внутри контейнера — это процесс, указанный в ENTRYPOINT или CMD. Важно, чтобы он корректно обрабатывал сигналы (например, SIGTERM) для graceful shutdown.

Ответ 18+ 🔞

А, ну это классика, ёпта! Самый первый процесс, который ядро Linux выпинывает в жизнь и награждает почётным PID 1, — это, блядь, как дед на завалинке, главный по тарелкам. Раньше все звали его init, старый, бородатый, простой.

Но времена меняются, как и мода на системы инициализации, понимаешь? Сейчас уже не то:

  • systemd: Это, сука, такой мажорный менеджер, который везде пролез. Стандарт де-факто в RHEL, Ubuntu, Debian. Овердохуища всего умеет, но и жрёт ресурсов, бывает, не по-детски.
  • runit, OpenRC: А вот это уже более аскетичные ребята. Их любят в разных lightweight-дистрибутивах, типа Void Linux или Alpine. Лёгкие, шустрые, без лишней мишуры. Хуй с горы — и работает.

А че вообще этот PID 1 делает, спросишь? Ну, работа у него не пыльная, только командовать:

  1. Инициализация системы: Это он файловые системы монтирует, сервисы запускает — в общем, поднимает систему с колен, как после хорошей пьянки.
  2. Управление сервисами: Дёргает демонов: запустись, остановись, перезагрузься. Главный по старту-стопу.
  3. Перезапуск завершившихся демонов: Если какой-то демон вдруг накрылся медным тазом и сдох, PID 1 его, бывает, тычет пальцем и воскрешает. Автоматически, блядь.
  4. Прием сиротских процессов: Самый, блядь, важный пункт! Это он за всеми зомби-процессами убирает, как дворник. Если этого не делать — система говном засорится. Доверия ебать ноль к тем, кто эту работу не делает.

Как посмотреть на этого красавца? Да элементарно!

ps -p 1
# Вывод: PID TTY      STAT   TIME COMMAND
#         1 ?        Ssl    0:05 /usr/lib/systemd/systemd

# А если хочешь увидеть всю его свиту, всё дерево процессов, что от него растёт
systemctl status
pstree -p 1

И отдельная тема — контейнеры (Docker). Там внутри контейнера PID 1 — это тот процесс, который в ENTRYPOINT или CMD прописан. И вот тут, чувак, важно до жути, чтобы он сигналы правильно ловил! Особенно SIGTERM. А то будет тебе хиросима: контейнеру скажут «закругляйся», а он, как упрямый осел, стоит и нихрена не понимает. Надо, чтобы shutdown был graceful, культурный, а не как об стенку горох.