Linux

Управление уровнями запуска Linux: пошаговое руководство по runlevel

В этой статье вы узнаете, что такое уровни запуска в Linux, как переключаться между ними с помощью `init`/`systemd` и как настроить автозагрузку сервисов. После выполнения инструкции вы сможете контролировать процесс загрузки системы.

Обновлено 22 июля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04Ubuntu 22.04Debian 11CentOS 8

Введение

Runlevel — это состояние системы, определяющее набор запущенных сервисов и уровень взаимодействия с пользователем. Понимание уровней запуска позволяет вручную контролировать процесс загрузки, устранять проблемы или настраивать автозагрузку нужных служб. После выполнения этой инструкции вы сможете быстро переключаться между режимами и настраивать автозагрузку.

Требования

  • Поддерживаемые дистрибутивы: Ubuntu 20.04, Ubuntu 22.04, Debian 11, CentOS 8.
  • Доступ к sudo (права администратора).
  • Система на базе init или systemd.

Пошаговая инструкция

Шаг 1: Проверка текущего уровня запуска

Выполните runlevel, чтобы увидеть текущий и предыдущий уровни. В systemd также полезно выполнить systemctl get-default — команда показывает целевой уровень загрузки.

runlevel
# или
systemctl get-default

Шаг 2: Выбор нужного уровня

Типичные уровни:

  • 0 — полное выключение питания.
  • 1 — одиночная пользовательская консоль (без сетевых сервисов).
  • 2 — многопользовательский режим без сетевых сервисов.
  • 3 — полноценный консольный режим (CLI).
  • 5 — графический режим с X‑в окном (самый распространённый для десктопов).
  • 6 — перезагрузка.

Определите, какой уровень вам нужен для текущей задачи.

Шаг 3: Переключение на нужный уровень

Для систем на init:

sudo init 3   # пример переключения на уровень 3

Для systemd:

sudo systemctl set-default multi-user.target
sudo systemctl isolate multi-user.target

Система перейдёт в выбранный режим после выполнения команд.

Шаг 4: Настройка автозагрузки через rc.local

Если вы используете SysVinit, отредактируйте /etc/rc.local. Добавьте нужные команды перед строкой exit 0. Пример:

#!/bin/bash
# Разрешить вход через SSH по паролю (если необходимо)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Сделайте файл исполняемым:

chmod +x /etc/rc.local

В systemd аналогичную автозагрузку реализуют через сервисы или таймеры, но rc.local подходит для простых сценариев.

Шаг 5: Проверка запущенных сервисов

Подтвердите, что система работает в выбранном режиме:

systemctl list-units --type=service --state=running
# или
ps -aux | grep -E 'sshd|apache|nginx'

Если сервисы отсутствуют, проверьте их статус (systemctl status name) и устраните проблему.

Проверка результата

Повторите команду runlevel или systemctl get-default. Если отображаемый уровень совпадает с выбранным, переключение прошло успешно. Проверьте критически важные сервисы (systemctl status sshd, systemctl status nginx), чтобы убедиться, что они работают.

Возможные проблемы

  • Отсутствие прав: выполнение команд без sudo приводит к Permission denied. Используйте sudo или перейдите в учётную запись root.
  • Отсутствие /etc/rc.local: в некоторых дистрибутивах этот файл удалён. Создайте его вручную (sudo nano /etc/rc.local).
  • Неправильный init: если система использует systemd, init может быть псевдонимом для systemctl. Предпочтительно использовать команды systemd.
  • Неправильный уровень: переход на уровень 0 или 6 остановит или перезагрузит систему. Будьте осторожны, используйте эти уровни только при необходимости.

Часто задаваемые вопросы

Что такое уровни запуска (runlevel) в Linux?
Как проверить текущий уровень запуска?
Как переключить уровень запуска вручную?
Зачем изменять уровни запуска и какие последствия могут быть?

Полезное

Проверка текущего уровня запуска
Выбор нужного уровня
Переключение на нужный уровень
Настройка автозагрузки через rc.local
Проверка запущенных сервисов

Эта статья помогла вам решить проблему?