Введение в systemd: раздел команд

Введение в systemd: Практическое руководство

Введение в systemd: раздел команд

Автор: Руань Ифэн

Дата: 7 марта 2016 года

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

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

1. Происхождение

В истории, Загрузка Linux постоянно использовать init Процесс.

Следующая команда используется для запуска службы.

У этого метода есть два недостатка.

Во-первых, долгое время запуска. init Процессы запускаются последовательно, только после завершения запуска предыдущего процесса запускается следующий процесс.

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

II. Обзор Systemd

Systemd был создан для решения этих проблем. Его основной целью является предоставление полного решения для запуска и управления системой.

Согласно традициям Linux, буква d Это сокращение от демона (daemon). Название Systemd означает, что он должен охранять всю систему.

img

(На изображении автор Systemd) Lennart Poettering

Используя Systemd, больше не нужно использовать. init Системd заменил initd Он становится первым процессом системы (PID равен 1), остальные процессы являются его дочерними процессами.

Команда выше позволяет просмотреть версию Systemd.

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 Философия Unix img

(На верхнем изображении схема архитектуры Systemd)

Три. Системное управление

Systemd — это не одна команда, а набор команд, охватывающих все аспекты системного управления.

3.1 systemctl

systemctl Это основная команда Systemd, используемая для управления системой.

3.2 systemd-analyze

systemd-analyze Команда используется для просмотра времени загрузки.

3.3 hostnamectl

hostnamectl Команда используется для просмотра информации о текущем хосте.

3.4 localectl

localectl Команда используется для просмотра настроек локализации.

3.5 timedatectl

timedatectl Команда используется для просмотра текущих настроек часового пояса.

3.6 loginctl

loginctl Команда используется для просмотра текущих вошедших пользователей.

Четыре, единица

4.1 Значение

Systemd может управлять всеми системными ресурсами. Разные ресурсы обобщаются под названием Unit (единица).

Единица делится на 12 типов.

  • Служебный модуль: системная служба
  • Целевая единица: группа, состоящая из нескольких единиц.
  • Устройство: аппаратное обеспечение
  • Точка монтирования: точка подключения файловой системы
  • Автоматическая точка монтирования
  • Path Unit: файл или путь
  • Scope Unit: Внешный процесс, не запущенный Systemd
  • Slice Unit: группа процессов
  • Снимок единицы: Снимок systemd, можно вернуться к определенному снимку.
  • Сокетный модуль: сокеты для межпроцессного взаимодействия
  • Swap Unit: swap файл
  • Таймер

systemctl list-units Команда может показать все юниты текущей системы.

Состояние блока 4.2

systemctl status Команда используется для просмотра состояния системы и состояния отдельного юнита.

кроме status команда, systemctl Также предоставлены три простых метода для проверки состояния, которые в основном предназначены для использования в условных операторах внутри скрипта.

4.3 Управление единицей

Для пользователей наиболее часто используемыми являются следующие команды для запуска и остановки Unit (в основном service).

4.4 Зависимости

Существует зависимость между юнитами: если A зависит от B, это означает, что при запуске A Systemd одновременно запустит B.

systemctl list-dependencies Команда для вывода всех зависимостей Unit.

В выводе команды выше некоторые зависимости являются типом Target (подробнее см. ниже) и по умолчанию не отображаются. Если нужно развернуть Target, необходимо использовать --all параметр.

Пять. Конфигурационный файл Unit

5.1 Обзор

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

Systemd по умолчанию из каталога /etc/systemd/system/ Чтение конфигурационного файла. Однако большинство файлов в нем являются символическими ссылками, указывающими на директории. /usr/lib/systemd/system/ Где действительно хранится конфигурационный файл?

systemctl enable Команда используется для создания символической ссылки между двумя вышеуказанными директориями.

если в конфигурационном файле установлено автозапуск при загрузке, systemctl enable Команда эквивалентна активации автозагрузки.

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

Расширение конфигурационного файла - это вид данного Unit, например, sshd.socket Если опустить, то по умолчанию у Systemd суффикс будет .service так что sshd будет понято как sshd.service

5.2 Состояние конфигурационного файла

systemctl list-unit-files Команда используется для вывода всех конфигурационных файлов.

Эта команда выведет список.

Этот список показывает состояние каждого профиля, всего четыре вида.

  • включено: установлен стартовый линк
  • отключено: не создана ссылка на запуск
  • static: Этот конфигурационный файл отсутствует. [Install] Часть (невозможно выполнить), может использоваться только как зависимость для других конфигурационных файлов.
  • masked: Этот конфигурационный файл запрещает создание ссылки на запуск.

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

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

5.3 Формат конфигурационного файла

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

systemctl cat Команда может просмотреть содержимое конфигурационного файла.

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

Каждый блок состоит из связанных равенством пар ключ-значение.

5.4 Блоки конфигурационного файла

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

  • Dsecription Краткое описание
  • Documentation Адрес документа
  • Requires Текущий Unit зависим от других Units, и если они не запущены, текущий Unit не сможет запуститься.
  • Wants Если другие Units, совместимые с текущим Unit, не работают, текущий Unit не будет завершаться с ошибкой.
  • BindsTo с Requires Подобно этому, если указанный Unit завершится, это приведет к остановке текущего Unit.
  • Before Если единица, указанная в этом поле, также должна быть запущена, то ее необходимо запустить после текущей единицы.
  • After Если указанный в этом поле Unit также должен быть запущен, его необходимо запустить до текущего Unit.
  • Conflicts Указанный здесь модуль не может работать одновременно с текущим модулем.
  • Condition... Текущие условия, которые необходимо выполнить для запуска блока, иначе он не будет работать.
  • Assert... Текущие условия, которые должен выполнять блок для успешного запуска, иначе возникнет ошибка запуска.

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

  • WantedBy Его значение — один или несколько Target, символическая ссылка будет помещена, когда текущий Unit активен (включен). /etc/systemd/system Под каталоги с Target имя + .wants в подкаталоге, состоящем из суффиксов
  • RequiredBy Его значение — один или несколько Target, при активации текущего Unit символическая ссылка будет помещена. /etc/systemd/system Под каталоги с Target имя + .required в подкаталоге, состоящем из суффиксов
  • Alias Текущий псевдоним для запуска Unit
  • Also При активации (включении) текущего Unit будут одновременно активированы и другие Unit.

[Service] Блок, используемый для конфигурации сервиса, присутствует только у юнитов типа Service. Его основные поля следующие.

  • Type Определяет поведение процесса при запуске. У него есть несколько значений.
  • Type=simple : Значение по умолчанию, выполнение ExecStart Указанная команда, запустите главный процесс.
  • Type=forking Создание дочернего процесса от родительского процесса с помощью fork, после чего родительский процесс сразу же завершает свою работу.
  • Type=oneshot Одноразовый процесс, Systemd будет ждать завершения текущей службы, прежде чем продолжить выполнение.
  • Type=dbus Текущая служба запускается через D-Bus.
  • Type=notify Текущая служба успешно запущена, будет уведомление. Systemd , продолжайте выполнять дальше.
  • Type=idle Если другие задачи завершены, текущая служба начнет работать.
  • ExecStart Команда для запуска текущей службы.
  • ExecStartPre Команды, выполняемые перед запуском текущей службы.
  • ExecStartPost Команды, выполняемые после запуска текущей службы.
  • ExecReload Команда, выполняемая при перезапуске текущей службы.
  • ExecStop Команда, выполняемая при остановке текущей службы.
  • ExecStopPost Команда, выполняемая после остановки службы.
  • RestartSec Интервал в секундах для автоматической перезагрузки текущей службы.
  • Restart Определите, в каких случаях Systemd будет автоматически перезапускать текущую службу, возможные значения включают always (всегда перезагружается) on-success on-failure on-abnormal on-abort on-watchdog
  • TimeoutSec Определите количество секунд, которые Systemd должен ждать перед остановкой текущей службы.
  • Environment Установить переменные окружения

Полный список полей конфигурационного файла Unit, пожалуйста, смотрите. официальная документация

Шесть, цель

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

简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

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

Соответствие между Target и традиционными уровнями выполнения (RunLevel) следующее.

Это с init Основные различия в процессах следующие.

(1) Уровень выполнения по умолчанию /etc/inittab Настройки файла) теперь заменены на значение по умолчанию Target, расположение - /etc/systemd/system/default.target обычно символическая ссылка на graphical.target (графический интерфейс) или multi-user.target (Много пользовательская командная строка).

(2) Место расположения скрипта запуска раньше было /etc/init.d каталог, символические ссылки на разные каталоги уровня выполнения (например, /etc/rc3.d /etc/rc5.d и сейчас хранится в /lib/systemd/system и /etc/systemd/system Содержание.

(3) Место расположения конфигурационного файла раньше init Конфигурационный файл процесса это /etc/inittab Конфигурационные файлы различных сервисов хранятся в /etc/sysconfig Содержимое. В настоящее время конфигурационные файлы в основном хранятся в /lib/systemd Содержание, в /etc/systemd Изменения в каталоге могут перезаписать исходные настройки.

Семь. Управление журналами

Systemd единообразно управляет журналами запуска всех юнитов. Преимущества этого заключаются в том, что можно использовать только journalctl Команда для просмотра всех журналов (журналов ядра и приложений). Конфигурационный файл журнала — /etc/systemd/journald.conf

journalctl Мощный и с множеством способов использования.

(Конец)

Информация о документе

  • Авторское заявление: Свободное воспроизведение - некоммерческое - без производных - с указанием авторства. Лицензия Creative Commons 3.0 )
  • Дата публикации: 7 марта 2016 года

Вы недавно использовали:

收藏 - Коллекция Меню QQ