Поиск по сайту:

Как уровни выполнения Linux влияют на запущенные службы


Уровни запуска Linux различают рабочие состояния системы. Переключение уровня запуска изменит запущенные службы. Вы можете настроить уровни выполнения, чтобы каждый уровень начинался с определенного набора служб.

Стандартные уровни запуска

Ядро Linux определяет семь стандартных уровней выполнения. Отдельные дистрибутивы операционных систем могут настраивать эти уровни выполнения или добавлять дополнительные. Пользователи также могут свободно создавать и изменять уровни выполнения.

  • Уровень запуска 0 – нет активности, что эквивалентно выключению. Система готова к физическому отключению питания.
  • Уровень запуска 1 – работа в однопользовательском (аварийном) режиме.
  • Уровень запуска 2 – работа в многопользовательском режиме без сети и графики.
  • Уровень запуска 3 – многопользовательский режим с добавленной поддержкой сети.
  • Уровень запуска 4 — оставлен для определения пользователями/дистрибутивами.
  • Уровень выполнения 5 – многопользовательский режим с графическим пользовательским интерфейсом.
  • Уровень выполнения 6 – режим перезагрузки системы.

Большинство систем Linux загружаются на уровне запуска 5. Это уровень запуска, с которым вы, вероятно, знакомы лучше всего. Доступен широчайший спектр услуг, включая сервер отображения и полный сетевой стек. Если вы работаете на безголовом сервере без стека отображения, возможно, вы находитесь на уровне выполнения 3.

Некоторые однопользовательские системы запускаются на уровне запуска 1. Вы также столкнетесь с этим уровнем запуска, если будете использовать режим восстановления для спасения своей системы. Это позволяет вам получить доступ к оболочке, не входя в систему как обычный пользователь.

Уровни выполнения 2, 3 и 4 могут различаться в зависимости от дистрибутива. Некоторые дистрибутивы создают четкое различие между каждым уровнем выполнения; в других все три могут иметь тот же эффект. Как правило, вы можете ожидать, что любой из этих трех предоставит вам однопользовательскую текстовую оболочку с доступной сетью.

Ваша система может одновременно находиться только на одном уровне выполнения. После загрузки будет выбран один уровень выполнения. Вы не будете переходить между уровнями выполнения, если вы явно не инициируете изменение. Обычно единственные переходы уровня выполнения происходят с уровней 1-5 на уровень 0 или 6, когда ваша система выключается или перезагружается.

Более высокие уровни выполнения указывают на увеличение уровней доступных функций. Этому соглашению следуют все дистрибутивы. Низкий уровень запуска обычно означает, что работает только часть системных служб.

Уровни запуска и службы запуска

Службы запуска связаны с уровнями выполнения. Linux традиционно добавляет службы запуска на уровни выполнения. Когда ваша система переходит на уровень выполнения, все службы, связанные с этим уровнем, будут запущены.

То, как на самом деле обрабатываются сервисы, зависит от используемого менеджера сервисов. Отдельные дистрибутивы поставляются с разными менеджерами служб. Исходный диспетчер служб, init, определяет свои службы в /etc/init.d. Скрипты, созданные здесь, получают символические ссылки в /etc/rc, где они сортируются по уровням выполнения:

  • /etc/rc0.d — скрипты, размещенные здесь, выполняются на уровне выполнения 0…
  • /etc/rc1.d — Скрипты для уровня выполнения 1…
  • /etc/rc2.d – …и т. д.

Чтобы добавить новые службы запуска, создайте или отредактируйте скрипт в /etc/init.d:

ms:345:respawn:/usr/bin/service_executable

Затем используйте chkconfig, чтобы включить службу:

sudo chkconfig service_executable on

345:respawn в строке скрипта указывает init запускать service_executable, когда система переходит на уровни запуска 3, 4 или 5.

Многие новые дистрибутивы заменили init более современными альтернативами. Они могут обеспечить абстракцию более высокого уровня над уровнями запуска и системой инициализации.

Большинство дистрибутивов Linux, включая Debian, Ubuntu, CentOS, Arch и Red Hat, теперь используют systemd. Это не ссылается напрямую на уровни запуска; вместо этого они преобразуются в «цели», которые идентифицируются по имени. В то время как Linux может одновременно находиться только на одном уровне запуска, systemd поддерживает несколько одновременно активных целей. Сопоставление между уровнями выполнения и целями является приблизительным; это предусмотрено в целях совместимости.

Специальная цель default определяет, во что будет загружаться система. Цель default обычно связана с целью многопользовательская, что эквивалентно уровню выполнения 2 или выше.
Услуги каждой цели хранятся в каталоге «желаний». Он будет содержать файлы .service. Это также символические ссылки, указывающие на определения службы в /usr/lib/systemd/system.

ls -l /etc/systemd/system/multi-user.target.wants/*.service

Проверка уровня выполнения вашей системы

Вы можете узнать уровень запуска вашей системы с помощью команды runlevel. Это напечатает два символа на терминале. Они показывают предыдущие и текущие уровни запуска вашей системы.

N 5 — типичный вывод для настольной системы Linux. 5 указывает, что вы находитесь в многопользовательском графическом сеансе с доступной сетью. N означает, что предыдущий уровень выполнения не удалось определить, обычно из-за того, что система была выключена.

В некоторых системах вы можете получить текущий и предыдущий уровни запуска, используя переменные среды $RUNLEVEL и $PREVLEVEL. Если эти переменные установлены, команда runlevel просто выдает их значения.

Вы также можете проверить текущий уровень выполнения с помощью команды who. Запустите who -r, чтобы увидеть номер уровня запуска и время входа на уровень запуска.

Переключение между уровнями выполнения

Вы можете переключаться между уровнями выполнения с помощью команды telinit. Это позволяет вручную запускать различные режимы, такие как однопользовательский режим или режим восстановления.

Запуск telinit 0 выключит вашу машину; telinit 6 должен инициировать перезагрузку. Использование telinit с уровнями запуска 1–5 активирует соответствующий режим работы. Если вы сейчас находитесь в текстовом режиме, telinit 5 попытается включить сервер отображения и перейти в графический режим.

При использовании systemd команда systemctl isolate позволяет активировать другую «цель». Все запущенные службы будут остановлены; службы, связанные с новой целью, затем запускаются.

Вот как активировать цель многопользовательский:

sudo systemctl isolate multi-user.target

Если вы хотите внести постоянные изменения в уровень запуска, используйте команду systemctl set-default:

sudo systemctl set-default multi-user.target

Теперь цель многопользовательская будет выбираться при каждой перезагрузке вашей системы.

Краткое содержание

Уровни запуска Linux описывают различные состояния операционной системы. Каждый уровень выполнения включает дополнительную функциональность в виде дополнительных запущенных служб.

Низкие уровни выполнения обычно используются для режимов восстановления и работы только с текстом. Настольная система Linux с графическим окружением обычно находится на уровне выполнения 5. Вы должны проверить документацию вашего дистрибутива для получения подробного описания доступных уровней запуска, так как реализации могут различаться.