Какие системы инициализации применяются в Ubuntu?

«Какие системы инициализации применяются в Ubuntu?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В истории Ubuntu использовалось несколько систем инициализации, но современные версии стандартизированы.

Эволюция в Ubuntu:

  1. SysVinit: Использовался в самых ранних версиях. Управление через скрипты в /etc/init.d/.
  2. Upstart: Был стандартом в Ubuntu с версии 6.10 (Edgy Eft) до 14.10 (Utopic Unicorn). Использовал событийную модель (конфиги в /etc/init/).
  3. systemd: Стал системой по умолчанию, начиная с Ubuntu 15.04 (Vivid Vervet), и остается ею во всех актуальных LTS-релизах (16.04, 18.04, 20.04, 22.04).

Текущее состояние: Современный Ubuntu (актуальные LTS-версии) использует systemd. Это стандарт для управления службами, их зависимостями, журналами и системными состояниями.

Практические команды для systemd в Ubuntu:

# Проверка, что systemd является init-процессом (PID 1)
systemctl --version
# или
readlink /proc/1/exe

# Базовое управление службой Nginx
sudo systemctl start nginx    # Запустить
sudo systemctl stop nginx     # Остановить
sudo systemctl enable nginx   # Включить автозагрузку
sudo systemctl status nginx   # Показать статус

# Просмотр журналов службы
sudo journalctl -u nginx -f   # Следить за логами в реальном времени

Ключевое преимущество systemd для DevOps: Единообразие. Один набор команд (systemctl, journalctl) работает одинаково на Ubuntu, CentOS, RHEL, Fedora и других современных дистрибутивах, что упрощает написание кросс-платформенных скриптов и документации.