Что за процессы в Linux c PID 0 и 1devops-24

Процесс с PID 0

Особенности:

  • Не является реальным процессом в традиционном понимании
  • Существует только в ядре Linux
  • Не отображается в ps или других инструментах мониторинга

Функции:

  1. Планировщик процессов (swapper)

    • Управляет выделением процессорного времени
    • Запускается когда нет других готовых к выполнению процессов
  2. Инициализация системы

    • Первый "процесс" создаваемый при загрузке
    • Родитель всех остальных процессов
# Попытка найти PID 0 (не отображается)
ps -ef | grep " 0 "

Процесс с PID 1

Историческая справка:

  • Традиционно: /sbin/init (SysV init)
  • Современные системы: systemd (в большинстве дистрибутивов)

Критические функции:

  1. Родитель всех процессов

    • Принимает осиротевшие процессы
    • Завершает работу системы
  2. Управление сервисами

    • Запуск/остановка демонов
    • Обработка зависимостей
  3. Целевые точки (targets)

    • Аналоги runlevels в SysV init
    • Управление состояниями системы
# Проверка текущего процесса init
ps -p 1 -o comm=

Примеры реализации PID 1:

  1. Systemd (Ubuntu, RHEL, CentOS, Fedora)

    systemctl --version
    
  2. OpenRC (Alpine Linux, Gentoo)

    rc-status
    
  3. runit (Void Linux, некоторые минималистичные дистрибутивы)

    sv status /etc/service/*
    

Различия между PID 0 и PID 1

ХарактеристикаPID 0PID 1
ВидимостьСкрытВидим
ФункцияПланировщикИнициализация
Пользовательkernelroot
Можно завершить?НетТолько с --force
Родитель процессовДа (косвенно)Да (прямо)

Опасные операции с PID 1

Нельзя просто убить:

# Это может КРИТИЧЕСКИ повредить систему!
sudo kill -9 1

Правильный способ перезагрузки:

sudo systemctl reboot
# или
sudo init 6

Резюмируем

  1. PID 0:

    • Виртуальный процесс ядра
    • Отвечает за планирование задач
    • Невидим для пользовательских утилит
  2. PID 1:

    • Первый реальный процесс пользовательского пространства
    • Родитель всех процессов
    • Современные реализации: systemd, OpenRC, runit
    • Критически важен для работы системы

Для диагностики:

  • pstree -p - показать дерево процессов
  • systemd-analyze - анализ загрузки (для systemd)
  • cat /proc/1/status - детали главного процесса