Telinit 1 linux что это

Обновлено: 08.07.2024

init - универсальное средство запуска процессов. Его основная задача - создавать процессы на основе информации, находящейся в файле /etc/inittab .

Определение уровня выполнения

В каждый момент времени система находится на одном из восьми возможных уровней выполнения (run level). Уровень выполнения - это конфигурация программного обеспечения, при которой существует только определенная группа процессов. Процессы, запускаемые процессом init для каждого из этих уровней выполнения, определяются в файле /etc/inittab . Процесс init может работать на одном из восьми уровней выполнения, 0 - 6 , S или s (уровни S и s - идентичны). Уровень выполнения изменяется, когда привилегированный пользователь выполняет процесс /sbin/init . Он посылает соответствующие сигналы исходному процессу init , запущенному операционной системой при загрузке, уведомляющие его о том, на какой уровень выполнения перейти.

Процесс init и загрузка системы

При загрузке системы вызывается процесс init и происходит следующее. Сначала он читает файл /etc/default/init для установки переменных среды. Именно на основе информации из этого файла устанавливается переменная TZ (часовой пояс) и переменные, задающие локаль, например, LANG или LC_CTYPE .

Затем процесс init ищет запись initdefault в файле /etc/inittab (см. inittab(4) ). Если запись initdefault :

существует Процесс init обычно использует уровень выполнения, указанный в этой записи, как начальный уровень, на который надо перейти.

не существует (или не существует файла /etc/inittab) Процесс init просит пользователя ввести уровень выполнения с системной консоли.

Если начальный уровень выполнения:

S или s Процесс init переходит в однопользовательское состояние. В этом состоянии системная консоль (устройство /dev/console ) открывается на чтение и запись, и вызывается команда /sbin/su , (см. su(1M) ). Для изменения уровня выполнения в дальнейшем используйте команду init или telinit . Учтите, что если работа командного интерпретатора будет прекращена (путем ввода символа конца файла), процесс init , при отсутствии файла /etc/inittab переинициализируется только в однопользовательское состояние.

0 - 6 Процесс init переходит на соответствующий уровень выполнения. Уровни выполнения 0, 5 и 6 зарезервированы для остановки системы. Уровни 2, 3 и 4 доступны как варианты многопользовательской работы.

Если это первый, после включения питания, переход процесса init на уровень выполнения, отличный от однопользовательского, процесс init сначала ищет в файле /etc/inittab записи boot и bootwait (см. inittab(4) ). Эти записи выполняются до любой другой обработки файла /etc/inittab , если уровень выполнения, на который выполняется переход, соответствует уровню, указанному в такой записи. Таким образом, любая специфическая инициализация операционной системы, например, монтирование файловых систем, может быть выполнена до того, как в системе зарегистрируются пользователи. Затем процесс init просматривает файл /etc/inittab и выполняет все остальные записи, соответствующие данному уровню выполнения.

Чтобы запустить все процессы в /etc/inittab , процесс init читает записи, и для каждой записи, которую необходимо перезапустить, он порождает дочерний процесс. После порождения всех процессов, указанных в файле /etc/inittab , процесс init ждет, пока не завершит работу один из порожденных им процессов, пока не поступит сигнал powerfail или сигнал от другого процесса init или telinit , требующий изменить уровень выполнения системы. В любом из этих случаев, процесс init перечитывает файл /etc/inittab .

Добавление записей в inittab

Новые записи можно добавлять в файл /etc/inittab в любой момент; однако, процесс init будет ждать наступления одного из перечисленных выше условий, прежде чем перечитывать файл /etc/inittab . Чтобы обойти это, выполните команду init Q или init q , требующую от процесса init немедленно перечитать файл /etc/inittab .

При запуске init в момент начальной загрузки и при любом переходе системы из однопользовательского состояния на другой уровень выполнения, init устанавливает параметры состояния ioctl(2) в режимы, сохраненные в файле /etc/ioctl.syscon . Процесс init записывает данные в этот файл при каждом переходе в однопользовательский режим.

Изменения уровня выполнения

Когда делается запрос на изменение уровня выполнения системы, процесс init посылает предупреждающий сигнал ( SIGTERM ) всем процессам, не определенным на заданном уровне выполнения. Процесс init ждет пять секунд, прежде чем принудительно завершать работу этих процессов посылкой им сигнала SIGKILL .

Когда процесс init получает сигнал о том, что порожденный им процесс прекратил существование, он записывает информацию об этом событии и его причине в файлы /var/adm/utmpx и /var/adm/wtmpx, если они существуют (см. who(1) ). Хронология порождения процессов записывается в файл /var/adm/wtmpx .

Если процесс init получает сигнал о сбое питания ( SIGPWR ), он ищет в файле /etc/inittab специальные записи типа powerfail и powerwait . Соответствующие этим записям процессы запускаются (если позволяет уровень выполнения) перед выполненгием любой дальнейшей обработки. За счет этого процесс init может выполнить необходимые действия по завершению работы операционной системы и записи информации при отключении питания.

Файл /etc/defaults/init

Для перечисленных ниже переменных в файле /etc/default/init можно задать стандартные значения. Например: TZ=US/Pacific

TZ Задает либо информацию о часовом поясе (см. ctime(3C) ), либо имя файла с информацией о часовом поясе /usr/share/lib/zoneinfo .

LC_CTYPE Описательная информация о наборе символов.

LC_MONETARY Информация о форматировании денежных величин.

LC_NUMERIC Информация о форматировании чисел.

LC_TIME Информация о формате времени.

LC_ALL Если значение задано, все остальные переменные среды LC_* его наследуют.

LANG Если значение LC_ALL не задано, и не задано значение некоторой переменной LC_* , вместо него используется значение LANG .

Команда telinit , связанная с /sbin/init , используется для управления действиями init . Она принимает односимвольный аргумент и требует от init выполнить соответствующее действие.

Для управления сеансом init использует модули pam(3PAM) . Правила конфигурирования PAM, перечисленные в файле /etc/pam.conf , задают, какой модуль управления сеансом должен использоваться для init . Вот строка из файла pam.conf , задающая для init использование модуля управления сеансом UNIX.

Если для службы init отдельной записи нет, будет использована запись для службы " other ".

/etc/inittab контролирует управление процессами, которое осуществляет init

/var/adm/utmpx информация о доступе пользователей и администрировании

/var/adm/wtmpx хронология доступа пользователей и администрирования

/dev/console устройство системной консоли

/etc/default/init переменные среды.

АТРИБУТЫ

Описание следующих атрибутов см. на странице справочного руководства attributes(5):

ТИП АТРИБУТА ЗНАЧЕНИЕ АТРИБУТА
Доступен в пакете SUNWcsu

ССЫЛКИ

Процессы init и telinit может запускать только привилегированный пользователь.

Следует избегать бессистемного использования уровней выполнения S и s в файле /etc/inittab . При изменении этого файла, лучше избегать добавления этого состояния в любые строки, кроме initdefault .

Если стандарное состояние не указано с помощью записи initdefault в файле /etc/inittab , система переходит на уровень 6. Как следствие, система зациклится и будет постоянно перезагружаться.

Если при загрузке системы не удается создать файл utmpx , система загрузиться в состояние " s ", независимо от состояния, указанного в записи initdefault файла /etc/inittab . Это может произойти при недоступности файловой системы /var .

Copyleft (no c) 2003 В. Кравчук, OpenXS Initiative, перевод на русский язык

Уровни выполнения (runlevel) Linux можно представить, как режим, в котором запускается система. Каждый из этих режимов обладают своими процессами, которые включены или выключены в зависимости от запущенного уровня выполнения. С момента загрузки Linux выполняется в одном из режимов, нельзя запускать систему в нескольких режимах, но есть возможность переключаться между уровнями во время работы на компьютере.

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

ПОЧЕМУ ВАЖНЫ УРОВНИ ДОСТУПА

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

Тем не менее уровни выполнения Linux дают администраторам повышенный контроль над системой.

Режим, в котором работает система, может быть изменен (как это сделать будет показано далее), как и сервисы, которые выполняются в этом режиме. Это позволяет нам полностью контролировать, к каким службам система будет иметь доступ в данный момент.

СКОЛЬКО УРОВНЕЙ ВЫПОЛНЕНИЯ СУЩЕСТВУЕТ?

В системе Linux есть семь уровней выполнения, которые нумеруются от 0 до 6. Разные дистрибутивы по-разному используют уровни выполнения, так что очень сложно составить список задач, которые выполняет конкретный уровень.

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

  • Runlevel 0 завершает работу системы
  • Runlevel 1 однопользовательский режим работы. Чаще всего используется в целях обслуживания и выполнения других административных задач. Это уровень также может называться runlevel S, где S означает single-user. Если вам когда-то приходилось сбрасывать пароль на Linux, то вы вероятно уже пользовались этим режимом.
  • Runlevel 2 многопользовательский режим работы без поддержки сетевых служб (демонов).
  • Runlevel 3 многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.
  • Runlevel 4 не используется. Пользователь может настраивать этот уровень исходя из его целей. О том, как это сделать также будет рассказано далее.
  • Runlevel 5 этот режим схож с уровнем 3, но тут еще запускается графический интерфейс. В этом режиме работают десктопные версии Linux.
  • Runlevel 6 этот уровень перезагружает систему.

КАК УЗНАТЬ ТЕКУЩИЙ РЕЖИМ РАБОТЫ?

Чтобы узнать текущий уровень выполнения достаточно ввести команду runlevel в командной строке.

На выводе этой команды две цифры. Первая указывает на предыдущий режим работы, а второй на текущий. На скриншоте вместо первой цифры указана буква N, что значит система изначально запускалась и работает в 5 режиме, о чём говорит вторая цифра 5.

КАК МЕНЯТЬ УРОВЕНЬ ВЫПОЛНЕНИЯ?

Текущий уровень выполнения можно менять командой "telinit". Ниже приведён пример смены уровня выполнения на CentOS.

Текущий уровень выполнения можно менять командой telinit Текущий уровень выполнения можно менять командой telinit

Следует отметить, что эта операция требует прав привилегированного пользователя. Имейте ввиду, что на системах семейства Debian уровни выполнения работают по-другому. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.

После выполнения команды указанной выше, ваш экран может стать пустым. Это потому, что вы остались на пустом терминале, чтобы вернутся на рабочий терминал нажмите комбинацию клавиш Alt+F1.

Если запустить команду runlevel еще раз, то мы увидим, что текущий уровень выполнения 3, а предыдущий 5.

LINUX SYSTEM ПРОТИВ RUNLEVELS

В последние годы systemd сменила многолетнюю систему уровней доступа (System V init). Фактически он работает по тому же принципу, но использует новые команды, которые в целом используют "runlevel" как "target".

  • Runlevel 0 = poweroff.target (runlevel0.target)
  • Runlevel 1 = rescue.target (runlevel1.target)
  • Runlevel 2 = multi-user.target (runlevel2.target)
  • Runlevel 3 = multi-user.target (runlevel3.target)
  • Runlevel 4 = multi-user.target (runlevel4.target)
  • Runlevel 5 = graphical.target (runlevel5.target)
  • Runlevel 6 = reboot.target (runlevel6.target)

По ходу статьи мы изучим systemd и его команды.

КАК ПОМЕНЯТЬ УРОВЕНЬ ВЫПОЛНЕНИЯ ПО УМОЛЧАНИЮ?

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

Именно для таких случаев нужно убедиться, что уровень выполнения по умолчанию 3, а не 5.

В прошлом для этого приходилось редактировать файл /etc/inittab. Вы еще можете увидеть эту практику на некоторых системах. Если вы работаете с ОС, которые давно не обновляются до новых версий, этот путь будет приемлемым.

На скриншоте уровнем выполнения по умолчанию установлен 5.

Но большинство систем Linux отказались от файла /etc/inittab в пользу systemd targets и мы рассмотрим разницу между ними по ходу статьи.

Чтобы проверить текущий уровень выполнения по умолчанию введите команду

Система вернула нам "graphical.target". Как вы наверное и догадались, это не что иное, как уровень выполнения 5.

Чтобы просмотреть остальные "target" и уровни выполнения, ассоциированные с ними введите команду:

Символьные ссылки указывают на то, что systemd работают так же как и runlevel. Итак, что необходимо сделать, чтобы поменять уровень выполнения по умолчанию? Для этого достаточно создать новую символьную ссылку на интересующую нас цель systemd.

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target $ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

Данной командой мы поменяли режим запуска системы по умолчанию с уровня выполнения 5, на 3 и при следующей загрузке система выполнить именно этот уровень.

Ключ f указывает на то, что перед созданием новой символьной ссылки целевой файл должен быть удален. Это же самое могли бы сделать командой rm.

Чтобы проверит успешно ли применились изменения достаточно повторно ввести команду "systemctl get-default".

РАЗНИЦА МЕЖДУ УРОВНЯМИ ВЫПОЛНЕНИЯ 3 И 5

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

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

ПРОСМОТР СПИСОК СЛУЖБ КОНКРЕТНОГО УРОВНЯ

Чтобы просмотреть список служб, доступных для каждого уровня до недавнего времени использовалась команда "chkconfig -list". Если у вас стоит одна из последний версий, системы, то вероятно вы получите ошибку, как на скриншоте ниже:

Чтобы проверить, какие службы запускаются во время загрузки системы в режиме графического интерфейса (уровень выполнения 5 для семейства RedHat), нужно запустить следующую команду:

Чтобы просмотреть список доступных служб другого уровня, просто замените "graphical.target" на нужную.

ПОД КАКИМ УРОВНЕМ РАБОТАЕТ ПРОЦЕСС

Если нужно посмотреть по каким уровнем выполнения запущена та или иная служба, можно ввести команду:

Например, чтобы посмотреть какой runlevel использует служба sshd, введите команду:

Судя по скриншоту выше, служба sshd запушена под уровнями 2,3 и 4 (multi-user.target)

МЕНЯЕМ УРОВЕНЬ ЗАПУСКА ПРИЛОЖЕНИЯ

Как было показано выше, демон SSH запущена только на уровнях 2-4. Что если нам нужно, чтобы он работал ещё и на уровне 5? Для этого нужно ввести следующее изменение:

$ systemctl enable sshd.service Редактировать галерею $ systemctl enable sshd.service Редактировать галерею

ПРОБЛЕМЫ БЕЗОПАСНОСТИ С УРОВНЯМИ ДОСТУПА LINUX

Как было сказано ранее, уровни доступа дают администраторам возможность управлять службами, которые работают в определённых случаях. Такая возможность детального контроля повышает безопасность системы, так как системный администратор может быть уверен, что не запущена ни одна сторонняя служба.

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

Используя методы из данного руководства, вы можете настроить уровень выполнения по умолчанию и контролировать запущенные приложения. Это, конечно, не уменьшит нагрузку на системные ресурсы, но сервер будет более защищен.

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

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

КАКОЙ УРОВЕНЬ ВЫПОЛНЕНИЯ ВЫБРАТЬ?

Выбор режима запуска системы полностью зависит от ситуации. В основном используется один из двух режимов: либо runlevel 3, либо runlevel 5.

Если вам удобно работать с командной строкой и вам не нужен графический интерфейс, то уровень выполнения 3 самый подходящий.

Это предотвратит запуск ненужных служб. С другой стороны, если вам хочется работать в десктопном режиме или же вам нужна графическая оболочка для работы какой-то программы, то выберите уровень 5.

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

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

Как вы уже, наверное, заметили, мы не может запускать систему с уровнем 0 и 6, но можно переключаться на них если нужно выключить или перезагрузить систему. Но в этом нет особой необходимости, так как есть команды, которые выполняют эти операции.

МОЖНО ЛИ СОЗДАНО НОВЫЙ УРОВЕНЬ НА LINUX?

Так как система Linux это система бесконечных возможностей, то и создание нового уровня не исключение. Но очень маловероятно, что вам когда-нибудь понадобится это. Но если вы все-таки решили создать новый уровень, то следует начать с копирования существующего уровня и изменения её под свои задачи.

Целевые уровни расположены по следующему пути:

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

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

Затем в новой директории создайте поддиректорую "wants":

Затем просто создайте символьную ссылку на дополнительные службы в директории /usr/lib/systemd/system, которые необходимы вашему уровню.

Вы когда-нибудь интересовались различными этапами загрузки операционной системы? Что происходит, когда вы включаете свой компьютер?

Этапы процесса загрузки Linux условно можно разделить на:

Загрузка BIOS (POST).

Первый этап загрузки (MBR или GPT).

Второй этап загрузки (GRUB2).

Инициализация главного процесса (init или systemd).

Уровни выполнения (runlevels).

Сейчас мы их и рассмотрим.

Загрузка BIOS (POST)

Вы можете использовать функциональные клавиши (F1-F12) в режиме BIOS, чтобы задать приоритет загрузки устройств, настроить параметры аппаратного обеспечения компьютера или восстановить заданные по умолчанию значения параметров компьютера. В меню BIOS вы найдете номер версии BIOS, наименование поставщика BIOS, тип вашего процессора и другую подробную информацию о системе.


Меню загрузки в BIOS (Boot Manager) представляет собой список, в котором вы можете выбрать загружаемую операционную систему. Если на вашем компьютере установлено несколько дистрибутивов Linux или других операционных систем, вы можете добавить их в меню загрузки. Последняя установленная ОС будет показана в верхней части Boot Manager.

На следующем рисунке вы можете видеть, что на моем компьютере установлены Ubuntu и Windows. Я могу выбрать любую операционную систему (из доступных) для загрузки.



Первый этап загрузки (MBR или GPT)

Как только MBR обнаруживает загрузчик второго этапа, то передает управление на него.

Примечание: Стоит отметить, что сейчас все чаще вместо MBR используется более современная технология — GPT.

Второй этап загрузки (GRUB2)

Задача загрузчика второго этапа состоит в том, чтобы найти ядро системы и загрузить его в память.


Конфигурационными файлами загрузчика GRUB обычно являются файлы /boot/grub/grub.conf или /etc/grub.conf. Как только загрузчик находит ядро, то загружает его в оперативную память и передает ему дальнейшее управление.

Инициализация ядра

Большинство новых пользователей Linux считают, что Linux — это операционная система. Но на самом деле Linux — это ядро. Ядро часто называют сердцем операционной системы. Оно играет очень важную роль в процессе загрузки Linux. Ядро Linux находится в каталоге /boot и отвечает за взаимодействие между основными компонентами компьютера и операционной системой.


Файлы ядра Linux

Инициализации главного процесса (init или systemd)


Примечание: В системе инициализации SysV главным процессом является процесс init, а в системе инициализации systemd — (одноименный) процесс systemd.

Уровни выполнения (runlevels)

Runlevel 0 — завершает работу системы.

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

Runlevel 4 — не используется. Пользователь может настраивать этот уровень исходя из его целей.

Runlevel 5 — схож с режимом 3, но здесь запускается графический интерфейс. В этом режиме работают десктопные версии Linux.

Runlevel 6 — перезагружает систему.

Примечание: В системах семейства Debian уровни выполнения выстроены немного иначе. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.

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

Узнать текущий режим уровня выполнения можно с помощью следующей команды:


Если вам по какой-либо причине потребуется изменить уровень выполнения, то это можно сделать с помощью следующей команды:

sudo telinit [номер_уровня]

Заключение

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

Чтение "В чем разница между командами остановки и выключения?" Я обычно имею представление о том, что делает команда shutdown, с опциями -h / -r или без них.

Команда "halt" выполняет отключение системы до уровня 0 системы.

Команда «shutdown» выполняет выключение системы для запуска уровня 1 без команды -h или -r.

А как насчет команды "poweroff", которая входит в уровень выполнения 0 или 1? Это единственное основное различие между этими тремя командами?

Это некоторые вещи, которые значительно различаются, например, для Solaris и FreeBSD. (Там они обычно (почти) немедленно останавливают / выключают сервер, не изменяя уровни выполнения, чтобы сначала завершить работу)

А теперь системный ответ.

    ; они существуют, но только как совместимость прокладок. Документация systemd гласит, что концепция «устарела». Если вы начинаете изучать этот материал в операционной системе systemd, не начинайте там.
  • Забудьте о странице руководства, которую цитировал Марсельм; это вовсе не из правильного набора инструментов, а описание команды другого набора инструментов, неправильное для systemd. Это для halt команды из Ван Смуренбурга утилиты "Система 5" init .
  • Игнорируйте утверждения, которые /sbin/halt являются символической ссылкой на /sbin/reboot ; это не так с systemd. Там нет отдельной reboot программы вообще.
  • Игнорировать операторы, которые halt или reboot вызывают shutdown программу с аргументами командной строки; они также не верны с systemd. Там нет отдельной shutdown программы вообще.

Каждый набор инструментов для управления системой имеет свою версию этих утилит. Systemd, выскочка, перекус , ван Smoorenburg init и BSD init все имеют свои собственные halt , poweroff и так далее. На каждой их механика немного отличается. Как и их справочные страницы.

В Systemd набор инструментов halt , poweroff , reboot , telinit , и shutdown являются все символические ссылки /bin/systemctl . Они все регулировочные шайбы с обратной совместимостью, которые просто сокращение для вызова интерфейса первичного командной строки Systemd в: systemctl . Они все на карте (и на самом деле являются) той же одной программе. (По соглашению оболочка сообщает ему, по какому имени она была вызвана.)

цели, а не уровни выполнения

Диаграммы на bootup странице руководства (7) в наборе инструментов systemd, в частности на последней, показывают, что здесь есть три «конечные» цели:

  • halt.target - Как только система достигнет состояния полной изоляции этой цели, она вызовет reboot(RB_HALT_SYSTEM) системный вызов. Ядро попытается войти в программу монитора ПЗУ или просто остановит ЦП (используя любой подходящий для этого механизм).
  • reboot.target - Как только система достигнет состояния полной изоляции этой цели, она вызовет reboot(RB_AUTOBOOT) системный вызов (или эквивалент магической командной строки). Ядро попытается запустить перезагрузку.
  • poweroff.target - Как только система достигнет состояния полной изоляции этой цели, она вызовет reboot(RB_POWER_OFF) системный вызов. Ядро будет пытаться отключить питание системы, если это возможно.

Это то , о чем вы должны думать, как о конечной системе, а не о прохождении уровней. Обратите внимание на диаграмму, что целевая система systemd сама кодирует вещи, которые в других системах являются неявными, а не явными: например, представление о том, что каждая из этих конечных целей охватывает shutdown.target цель, так что описываются службы, которые должны быть остановлены перед выключением имея их в конфликт с к shutdown.target цели.