Какие типы юнит-файлов поддерживает демон systemd

Обновлено: 04.07.2024

В этой статье мы покажем вам, как управлять модулями systemd с помощью команды systemctl.

Что такое systemd?

systemd — это системный и сервисный менеджер для современных операционных систем Linux, обратно совместимый со сценариями инициализации SysV и LSB.

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

systemd вводит концепцию модулей systemd, которые расположены в папке «/usr/lib/systemd/system», тогда как устаревшие сценарии инициализации располагались в папке «/etc/rc.d/init.d».

systemd — это первый процесс, который запускается после загрузки системы и содержит PID 1.

Если вы хотите узнать больше о файле модуля systemd, см. следующие статьи:

  • Как изменить существующий файл модуля systemd
  • Как создать файл сервисной единицы systemd в Linux

типы юнитов systemd

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

Unit-файлы — это текстовые файлы, которые могут создаваться или изменяться привилегированным пользователем.

Выполните следующую команду, чтобы просмотреть все типы юнитов:

< td>Service unit< td>Target unit
Тип устройстваРасширение файлаОписание
.serviceСлужба в системе, включая инструкции по запуску, перезапуску и остановке службы.
.targetЗаменяет уровни запуска sysV, управляющие загрузкой системы.
Device unit.deviceФайл устройства, распознаваемый ядром.
Подключаемый модуль.mount Точка монтирования файловой системы.
Единица сокета.socketСетевой сокет, связанный со службой.< /td>
Устройство подкачки.swapУстройство подкачки или файл подкачки.
Таймер.timerСистемный таймер.

Что такое systemctl?

Команда systemctl – это основной инструмент для управления или контроля модулей systemd. Она объединяет функциональные возможности службы SysVinit и команд chkconfig в одну команду.

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

Список всех модулей

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

Услуги листинга

Чтобы вывести список всех загруженных в данный момент сервисных единиц, выполните:


Подробнее о заголовке приведенного выше вывода:

  • UNIT = название сервисной единицы.
  • LOAD = показывает, был ли загружен файл модуля.
  • ACTIVE = состояние активации файла модуля высокого уровня.
  • SUB = состояние активации низкоуровневого модульного файла.
  • DESCRIPTION = Краткое описание файла модуля.

По умолчанию команда systemctl list-units отображает только активные юниты. Если вы хотите вывести список всех загруженных юнитов независимо от их состояния, запустите:

Чтобы получить список только запущенных служб, выполните:

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

Чтобы получить список только включенных сервисных единиц, выполните:

Чтобы отобразить содержимое юнит-файла, который systemd загрузил в память, выполните:

Чтобы просмотреть список свойств, заданных для указанного объекта, выполните:

Чтобы отобразить одно свойство, используйте флаг "-p" с именем свойства.

Чтобы рекурсивно отобразить только зависимости целевых объектов, запустите: Например, чтобы показать зависимости службы ssh.

Список сокетов

Чтобы получить список модулей сокетов, находящихся в данный момент в памяти, выполните:

Список маунтов

Чтобы получить список загруженных в данный момент единиц монтирования, выполните:

Список таймеров

Чтобы вывести список загруженных в данный момент блоков таймера, выполните:

Управление услугами

Сервис также является одним из типов юнитов в системе systemd, у которых есть юнит-файлы с суффиксом «.service». Над службой можно выполнить шесть типов общих действий, которые будут разделены на два основных типа.

  • Действия во время загрузки: включение и отключение, которые используются для управления службой во время загрузки.
  • Действия во время выполнения. Это запуск, остановка, перезапуск и перезагрузка, которые используются для управления службой по требованию.

Запустить службу

Остановить службу

Перезапустите и перезагрузите службу

Чтобы перезапустить запущенную службу, выполните:

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

Включение и отключение службы при загрузке

Чтобы автоматически запускать службы при загрузке, запустите: Это создаст символическую ссылку из '/usr/lib/systemd/system/ИМЯ_UNIT_.service' или '/etc/systemd/system/ИМЯ_UNIT_.service' на '/ etc/systemd/system/SOME_TARGET.target.wants/UNIT_NAME.service'.

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

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

Проверка статуса службы

Чтобы проверить статус службы, запустите: Это даст вам более подробную информацию о сервисной единице.

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

Маскирование и демаскирование юнитов

Чтобы предотвратить запуск какого-либо сервисного модуля вручную или другим сервисом, вам необходимо его замаскировать. Если вы замаскировали какую-либо единицу службы, она полностью отключит службу и не запустит службу, пока не будет снята маска.

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

Чтобы размаскировать юнит, запустите:

Создание и изменение файлов модулей systemd

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

  • /usr/lib/systemd/system/ — файлы модулей systemd удалены после установки пакета.
  • /run/systemd/system/ — файлы модулей systemd, созданные во время выполнения.
  • /etc/systemd/system/ — юнит-файлы systemd, созданные командой systemctl enable, а также юнит-файлы, добавленные для расширения службы.

Информацию о создании и изменении файлов модулей systemd см. в следующих статьях:

  • Как создать файл сервисной единицы systemd в Linux
  • Как изменить существующий файл модуля systemd

Системные цели

Цели – это специализированные юнит-файлы, определяющие состояние системы Linux. systemd использует цели для группировки других модулей через цепочку зависимостей, которая служит такой цели, как уровни выполнения.

  • В следующей статье приведена шпаргалка по SysVinit и systemd.

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

Список целей

Чтобы просмотреть список доступных целей в вашей системе, запустите:

Отображение цели по умолчанию

По умолчанию процесс systemd использует цель по умолчанию при загрузке системы. Чтобы просмотреть цель по умолчанию в вашей системе, запустите:

Чтобы установить другую цель в качестве цели по умолчанию, запустите: Например, чтобы установить «graphical.target», запустите:

Изменение текущей активной цели

Чтобы немедленно изменить текущую активную цель, запустите: Например, если вы хотите переключиться с текущей графической цели (GUI) на многопользовательскую цель (CLI — интерфейс командной строки), выполните:

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

Если ваша система не может завершить обычный процесс загрузки из-за проблемы, вы можете загрузить систему в аварийном (однопользовательском) режиме для дальнейшего устранения неполадок.

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

Загрузка системы в аварийном режиме

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

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

Управление питанием

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

Чтобы остановить систему, запустите:

Чтобы выключить систему, выполните:

Чтобы перезагрузить систему, запустите:

Заключение

В этом руководстве мы показали вам, как использовать команду systemctl в Linux с несколькими примерами для управления или контроля модулей systemd.

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

В этой документации мы более подробно рассмотрим файлы модулей Systemd. «Единица» относится к ресурсу, которым система умеет управлять и оперировать.Эти ресурсы далее определяются с помощью файлов конфигурации, известных как юнит-файлы.

Файлы модулей можно найти в трех основных каталогах, которые могут немного различаться в зависимости от вашей ОС. Эти каталоги также определяют порядок, в котором выполняются действия с файлами модулей. Как только Systemd находит конкретный юнит-файл для юнита, он больше не ищет его. Итак, если вы хотите заменить юнит-файл в /run/systemd/system, вы можете поместить файл в /etc/systemd/system:

/etc/systemd/system — локальная конфигурация

/run/systemd/system — Единицы времени выполнения

/usr/lib/systemd/system — Единицы установленных пакетов

В каталогах имена файлов модулей имеют следующую форму:

unit_name определяет имя модуля, а type_extension определяет тип модуля. Например, у нас может быть sshd.service. Существует несколько различных типов единиц, в таблице ниже представлен их обзор:

< td>Группа модулей systemd. < /tr>< tr>
Тип подразделения Расширение файла Описание
Единица обслуживания .service Системная служба.
Целевая единица .target
Модуль автомонтирования .automount Точка автомонтирования файловой системы.
Единица устройства .device Файл устройства, распознаваемый ядром.
Единица монтирования .mount Точка монтирования файловой системы.
Единица пути .path< /td> Файл или каталог в файловой системе.
Единица области видимости .scope Внешне созданный процесс.
Единица среза .slice Группа иерархически организованных единиц, которые управляют системными процессами.
Единица моментального снимка .snapshot Сохраненное состояние диспетчера systemd.
Сокет unit .socket Сокет межпроцессного взаимодействия .
Устройство подкачки .swap Устройство подкачки или файл подкачки.
Таймер .timer Системный таймер.

Структура файла модуля

Файл модуля обычно состоит из трех разделов:

[Unit] — информационный раздел. Он будет содержать общие параметры, не зависящие от типа устройства. Здесь вы, вероятно, найдете описание службы, а также информацию о том, от каких других служб она зависит, прежде чем ее можно будет запустить.

[Служба] — этот раздел содержит команды и переменные среды, необходимые для запуска службы. Он также может содержать команду, которая корректно завершает работу службы.

[Install] — этот раздел сообщит сервису, какой цели требуется этот сервис. Этот раздел также можно использовать для определения псевдонимов службы.

В качестве примера рассмотрим файл sshd.service. Комментарий, описывающий каждую строку, выделен курсивом:

Заключение

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

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

В этом руководстве подробно объясняются модули systemd, включая их состояния. Узнайте, что такое юниты systemd, как они подразделяются на разные типы и что означают разные состояния юнитов.

Что такое единица systemd?

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

Единица systemd состоит из имени, типа и файла конфигурации. Имя обеспечивает уникальный идентификатор устройства. Файл конфигурации определяет ответственность или задачу устройства. Тип помогает юниту группироваться с другими подобными типами юнитов.

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

Типы системных единиц

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

В следующей таблице перечислены распространенные типы единиц вместе с кратким описанием каждого типа единиц.

< td>Mount td>
Тип объекта Описание
Цель Группа объектов, определяющая точку синхронизации . Точка синхронизации используется во время загрузки для запуска системы в определенном состоянии.
Служба Устройство этого типа запускается, останавливается, перезапускается или перезагружает демон службы, такой как веб-сервер Apache.
Socket Устройство этого типа активирует службу, когда служба получает входящий трафик на прослушивающем сокете.
Устройство Устройство этого типа реализует активацию на основе устройства, например драйвер устройства.
Единица этого типа управляет точкой монтирования файловой системы.
Automount Единица этого типа обеспечивает и контролирует монтирование файловых систем по требованию.
Swap Единица этого типа инкапсулирует/активирует/деактивирует раздел подкачки.
Путь Блок этого типа отслеживает файлы/каталоги и активирует/деактивирует службу при доступе к указанному файлу или каталогу.
Таймер Устройство этого типа e активирует/деактивирует указанную службу на основе таймера или по истечении установленного времени.
Снимок Блок, который создает и сохраняет текущее состояние все ходовые единицы. Это состояние можно использовать для последующего восстановления системы.
Slice Группа блоков, которая управляет системными ресурсами, такими как ЦП и память.
Scope Единица, которая организует внешние процессы и управляет ими.
имя_шины Блок, управляющий системой DBus.
  • Демон – это процесс, который запускается во время загрузки или при запуске службы и работает в фоновом режиме, выполняя различные задачи. Демон работает непрерывно, пока он не будет остановлен вручную или система не будет выключена. По соглашению программа-демон использует букву "d" в конце своего имени.
  • Сокет — это основной канал связи. Служба или процесс использует его для связи с другими службами или процессами, работающими в локальной или удаленной системе.
  • Служба относится к одному или нескольким демонам. Запуск и остановка службы приводит к однократному изменению состояния системы.

Список типов юнитов Systemd

Чтобы получить список всех доступных типов юнитов, вы можете использовать команду "systemctl -t help". На следующем изображении показан вывод этой команды в системах Ubuntu и RHEL.

перечислить все системные единицы

Чтобы вывести список всех доступных единиц определенного типа, используйте следующую команду.

Например, следующая команда выводит список всех доступных единиц в типе службы.

На следующем изображении показан пример вывода этой команды.

перечисление единиц определенного типа

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

В следующей таблице кратко поясняются термины, которые systemd использует для описания состояния объектов.

< tr>
Статус Описание
загружено Файл конфигурации объекта успешно прочитан и обработан .
Активно (выход) Успешно выполнена однократная конфигурация, и после выполнения модуль не выполняет активный процесс и не ожидает события .
Активен (выполняется) Успешно выполнена одноразовая конфигурация, и после выполнения на устройстве запущен один или несколько активных процессов.
Активен (ожидание) Успешно выполнено одноразовое конфигурирование и после выполнения устройство ожидает события.
Неактивен (мертвый) Либо одноразовая конфигурация не была выполнена, либо еще не выполнена.

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

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

На следующем изображении показаны выходные данные обеих команд.

список активных и неактивных юнитов системы

По умолчанию, без каких-либо переключателей и опций, команда systemctl отображает список всех активных объектов. Это поведение по умолчанию делает параметр list-unities необязательным.Говоря простым языком, чтобы вывести список всех активных юнитов, вы можете использовать любую из следующих команд.

Переключатель --all указывает команде systemctl включать в выходные данные неактивные, ремонтные и неисправные блоки.

Вывод состояния модулей systemd при запуске

Чтобы просмотреть состояние модулей systemd при запуске, мы используем следующую команду.

На следующем изображении показаны выходные данные этой команды.

список включенных и отключенных устройств времени загрузки

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

Следующая команда отображает вывод этой команды.

перечисление включенных во время загрузки устройств определенного типа

Как видно из приведенного выше вывода, юнит может находиться в трех состояниях; включено, отключено и статично.

  • Если модуль находится во включенном состоянии, systemd запускает его во время загрузки.
  • Если устройство находится в отключенном состоянии, systemd не запускает его при запуске.
  • Если юнит находится в статическом состоянии, systemd не запускает его при запуске и не позволяет нам изменить его состояние.

Проще говоря, если устройство находится в отключенном или включенном состоянии, вы можете изменить его состояние с помощью команды «systemctl enable/disable». Но если юнит находится в статическом состоянии, вы не можете изменить его состояние. Технически, если модуль находится в статическом состоянии, это означает, что модуль не имеет раздела «установить» в своем файле конфигурации, который требуется для запуска модуля во время загрузки.

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

На следующем изображении показаны примеры этой команды с выводом.

перечисление единиц по состоянию

Разница между командами "systemctl" или "systemctl list-units" и командой "systemctl list-unit-files" заключается в том, что первые две команды дают моментальный снимок модулей во время выполнения, а последняя команда отображает состояние единиц при запуске.

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

От ComputerNetworkingNotes Обновлено 06.10.2019, 09:30:31 IST

Учебные пособия по ComputerNetworkingNotes Linux Единицы Systemd с описанием типов и состояний


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

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

Юнит-файлы: что это такое?

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

Файлы модулей могут храниться в нескольких разных местах вашей системы. systemd ищет файлы системных модулей в следующем порядке:

  1. /etc/systemd/система
  2. /run/systemd/система
  3. /usr/lib/systemd/система

Файлы модулей в более ранних каталогах переопределяют более поздние. Это полезная схема, поскольку она позволяет вносить изменения в каталог /etc, где ожидается конфигурация. Вам следует избегать внесения изменений в /usr. Ваша система устанавливает туда данные пакета, которые, как ожидается, не изменятся.

systemd также может работать в контексте пользователя и управлять ресурсами каждого пользователя в дополнение к системным. Файлы юнитов для пользовательских юнитов хранятся аналогичным образом в /etc/systemd/user, /run/systemd/user, и /usr/lib/systemd/user. Порядок приоритет работает аналогично.

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

Каждый файл модуля содержит параметры в форме OptionName=value, разделенные на разделы, помеченные как [SectionName]. Эти параметры описывают, как работает модуль и как работает systemd. с ним.

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

Единицы обслуживания

Эти единицы описывают процесс, который systemd может запускать и отслеживать. Сервисные единицы — это наиболее распространенные единицы, которые вы будете использовать ежедневно. Они управляются с помощью systemctl от имени пользователя root:

Обычные команды включают:

  • start: запускает модуль systemd
  • stop: попытки «красиво» завершить службу
  • статус: подробная информация о службе
  • перезапустить: перезапускает (останавливает, а затем запускает) указанную службу.
  • включить: перехватывает (связывает) модуль с различными местами, например, для запуска при загрузке
  • отключить: отключает (отвязывает) объект, поэтому он не активируется

В следующем примере показан модульный файл sshd.service. Это позволяет systemd управлять демоном sshd, который обеспечивает удаленный доступ к вашей системе через SSH (Secure Shell).

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

Процессы, принадлежащие сервису

Одной интересной особенностью systemd является то, что он отслеживает процессы, запускаемые с помощью служебных модулей. Чтобы узнать, какие процессы отслеживаются, используйте команду systemctl status. Например, вот вывод этой команды, проверяющей состояние модуля sshd.service:

Мы видим, что процесс, запущенный этой службой, имеет идентификатор процесса (PID) 1090. Systemd продолжит отслеживать этот процесс.

Обратите внимание, что служба поместила этот процесс в контрольную группу со специальным названием. Группа управления (или «cgroup») позволяет systemd совместно управлять связанными процессами. В следующих статьях этой серии мы рассмотрим, как эта функция позволяет настраивать ограничения производительности и ресурсов.

Благодаря знанию процессов, принадлежащих этой службе, systemd также может помочь вам управлять ошибочными службами. Обычно, когда вы останавливаете службу, вы используете команду systemctl, как упоминалось ранее. Например, чтобы остановить службу веб-сервера:

Но что, если служба не отвечает или не сотрудничает? В этом случае systemctl имеет встроенный переключатель kill:

Целевые единицы

Целевые блоки используются для связывания и группирования других блоков для описания желаемого состояния системы. Некоторые из этих единиц могут быть службами. Другие могут быть дополнительными целевыми единицами со своими собственными группами единиц.

Вот пример, файл модуля multi-user.target.

Обратите внимание, что этот файл целевого модуля не содержит команды для выполнения. Вместо этого он функционирует исключительно как способ соединения других юнитов (в данном случае, в основном целей) вместе. В этом случае:

  • Для multi-user.target требуется, чтобы basic.target успешно выполнялся при запуске multi-user.target.
  • Если единицы rescue.service или rescue.target запущены, они вызовут остановку этой единицы, и наоборот.
  • Узел multi-user.target запускается после запуска basic.target, а также после rescue.service и rescue.target запускаются, если они запущены.

Кроме того, эта целевая единица включает параметр AllowIsolate. Этот параметр позволяет вашей системе рассматривать модуль multi-user.target как объект загрузки с помощью команды systemctl isolate.

Целевые блоки группируют другие блоки вместе, а не только по содержимому их файлов блоков. У цели также может быть каталог .wants, который ссылается на модули, которые будут запущены вместе с целью. Например, файл /usr/lib/systemd/system/multi-user.target имеет связанную папку /usr/lib/systemd/system/multi-user.target.wants< /эм>. Этот каталог содержит ссылки на модули (не только сервисы, но и другие цели), которые будут запускаться при запуске этой цели. Каждый из них может иметь свои собственные зависимости или параметры файла модуля, такие как Requires выше.

Полезные ссылки

Для подробного ознакомления с общими параметрами раздела "Единицы" вы можете прочитать справочную страницу для единиц измерения:

Есть также специальные файлы документации для служебных и целевых файлов. Вы можете прочитать их с помощью этих команд:

Если вам нужна дополнительная информация об управлении процессами и группами управления в systemd, обратитесь к этой полезной записи в блоге.

systemd отвечает за инициализацию системы и имеет идентификатор процесса 1. systemd запускается непосредственно ядром и сопротивляется сигналу 9, который обычно завершает процессы. Все остальные программы либо запускаются непосредственно systemd, либо одним из его дочерних процессов. systemd является заменой демона инициализации System V и полностью совместим с системой инициализации System V (благодаря поддержке сценариев инициализации).

В следующем разделе объясняется концепция systemd .

systemd — это системный и сеансовый менеджер для Linux, совместимый со сценариями инициализации System V и LSB. Основные функции systemd включают следующее.

Активация сокета и D-Bus для запуска сервисов

запуск демонов по запросу

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

создание снимков и восстановление состояния системы

поддерживает точки монтирования и автомонтирования

реализует сложную логику управления сервисом на основе транзакционных зависимостей

Файл конфигурации устройства содержит информацию о службе, сокете, устройстве, точке монтирования, точке автоматического монтирования, файле или разделе подкачки, цели запуска, отслеживаемом пути к файловой системе, управляемом и контролируемом таймере. by systemd , временный снимок состояния системы, срез управления ресурсами или группа внешне созданных процессов. :

"Юнит-файл" — это общий термин, используемый systemd для следующего:

Сервис. Информация о процессе (например, о запущенном демоне); файл заканчивается на .service

Цели. Используется для группировки блоков и в качестве точек синхронизации при запуске; файл заканчивается на .target

Сокеты. Информация о IPC или сетевом сокете или файловой системе FIFO для активации на основе сокета (например, inetd ); файл заканчивается на .socket

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

Таймер. Информация об управляемом таймере для активации по таймеру; файл заканчивается на .timer

Точка монтирования. Обычно автоматически генерируется генератором fstab; файл заканчивается на .mount

Точка автомонтирования. Информация о точке автомонтирования файловой системы; файл заканчивается на .automount

Поменять местами. Информация об устройстве подкачки или файле для подкачки памяти; файл заканчивается на .swap

Устройство. Информация об устройстве, представленная в дереве устройств sysfs/udev(7); файл заканчивается на .device

Область/срез. Концепция иерархического управления ресурсами группы процессов; файл заканчивается на .scope/.slice

Система инициализации System V использует несколько команд для управления службами — сценарии инициализации, insserv , telinit и другие. systemd упрощает управление сервисами, поскольку для большинства задач по обслуживанию сервисов нужно запомнить только одну команду: systemctl. Он использует нотацию «команда плюс подкоманда», как git или zypper:

Полное руководство см. в man 1 systemctl.

Совет: вывод терминала и завершение Bash

Если вывод идет на терминал (а не в канал или файл, например), команды systemd по умолчанию отправляют длинный вывод на пейджер. Используйте параметр --no-pager, чтобы отключить режим подкачки.

systemd также поддерживает завершение bash, позволяя вам вводить первые буквы подкоманды, а затем нажимать →| . Эта функция доступна только в оболочке bash и требует установки пакета bash-completion .

Подкоманды для управления службами такие же, как и для управления службой с помощью System V init ( start , stop , . ). Общий синтаксис команд управления службами следующий:

systemd позволяет управлять несколькими службами одновременно. Вместо выполнения сценариев инициализации один за другим, как в случае с инициализацией System V, выполните следующую команду:

Чтобы вывести список всех служб, доступных в системе:

В следующей таблице перечислены наиболее важные команды управления службами для systemd и System V init:

Команда инициализации System V

Перезапуск. Закрывает службы и запускает их позже. Если служба еще не запущена, она будет запущена.

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

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

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

Получение подробной информации о состоянии. Выводит информацию о состоянии служб. Команда systemd показывает такие сведения, как описание, исполняемый файл, статус, контрольная группа и сообщения, выпущенные службой в последний раз (см. Раздел 15.6.9, «Отладка служб»). Уровень детализации, отображаемый с помощью System V init, отличается от службы к службе.

Получение краткой информации о состоянии. Показывает, активны службы или нет.

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

В следующей таблице перечислены команды включения и отключения для systemd и System V init:

Важно: запуск службы

При включении службы в командной строке она не запускается автоматически. Запуск запланирован при следующем запуске системы или при изменении уровня запуска/цели. Чтобы немедленно запустить службу после ее включения, явно запустите systemctl start MY_SERVICE или rc MY_SERVICE start .

Команда инициализации System V

systemctl включает MY_SERVICE(S)

insserv МОИ_СЛУЖБЫ(S) , chkconfig -a МОИ_СЛУЖБЫ(S)

systemctl отключить MY_SERVICE(S).service

insserv -r МОИ_СЛУЖБЫ(S) , chkconfig -d МОИ_СЛУЖБЫ(S)

Проверка. Показывает, включена ли служба.

systemctl включен MY_SERVICE

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

systemctl снова включает MY_SERVICE

Маскировка. После «отключения» службы ее все еще можно запустить вручную. Чтобы полностью отключить службу, ее нужно замаскировать. Используйте с осторожностью.

маска systemctl MY_SERVICE

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

systemctl размаскировать MY_SERVICE

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

При инициализации System V система загружалась на так называемый «уровень выполнения». Уровень запуска определяет, как система запускается и какие службы доступны в работающей системе. Уровни выполнения пронумерованы; наиболее известные из них: 0 (выключение системы), 3 (многопользовательский режим с сетью) и 5 ​​(многопользовательский режим с сетью и диспетчером дисплея).

systemd вводит новую концепцию, используя так называемые «целевые единицы». Однако он остается полностью совместимым с концепцией уровня запуска. Целевые единицы имеют имена, а не нумерацию, и служат определенным целям. Например, цели local-fs.target и swap.target монтируют локальные файловые системы и области подкачки.

Цель graphical.target предоставляет многопользовательскую систему с возможностями управления сетью и дисплеем и эквивалентна уровню выполнения 5. Сложные целевые объекты, такие как graphical.target, действуют как «мета-цели», объединяя подмножество других целей. Так как systemd упрощает создание пользовательских целей путем объединения существующих целей, он обеспечивает большую гибкость.

В следующем списке показаны наиболее важные целевые модули systemd. Полный список см. в man 7 systemd.special .

Цель, которая загружается по умолчанию. Не «настоящая» цель, а скорее символическая ссылка на другую цель, такую ​​как graphic.target. Можно навсегда изменить с помощью YaST (см. Раздел 15.4, «Управление службами с помощью YaST»). Чтобы изменить его для сеанса, используйте параметр ядра systemd.unit=MY_TARGET.target в приглашении загрузки.

Запускает аварийную оболочку на консоли. Используйте его только в строке загрузки как systemd.unit=emergency.target .

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

Завершает работу системы.

Запускает все службы, необходимые для отправки и получения почты.

Запускает многопользовательскую систему с сетью.

Перезагружает систему.

Запускает однопользовательскую систему без сети.

Чтобы сохранить совместимость с системой уровней запуска System V init, systemd предоставляет специальные цели с именами runlevelX.target, сопоставляющие соответствующие уровни запуска с номерами X.

Если вы хотите узнать текущую цель, используйте команду: systemctl get-default

Читайте также: