Skip to content

Latest commit

 

History

History
172 lines (130 loc) · 9.77 KB

5. systemd.md

File metadata and controls

172 lines (130 loc) · 9.77 KB

systemd

systemd — подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы традиционную подсистему init. Основная особенность — интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить запуск операционной системы. Основная единица управления — модуль (юнит), одним из типов модулей являются «службы» — аналог демонов — наборы процессов, запускаемые и управляемые средствами подсистемы и изолируемые контрольными группами.

Содержание

Архитектура

Подсистема оперирует специально оформленными файлами конфигурации — модулями (англ. unit). Каждый модуль отвечает за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому подобные ресурсы. Существуют специальные типы модулей, которые не несут функциональной нагрузки, но позволяют задействовать дополнительные возможности systemd, к ним относятся модули типа target, slice, automount и ряд других. systemd поддерживает следующие типы модулей:

  • .target — позволяет группировать модули, воплощая концепцию уровней запуска;
  • .service — отвечает за запуск сервисов (служб), также поддерживает вызов интерпретаторов для исполнения пользовательских скриптов;
  • .mount — отвечает за монтирование файловых систем;
  • .automount — позволяет отложить монтирование файловых систем до фактического обращения к точке монтирования;
  • .swap — отвечает за подключение файла или устройства подкачки;
  • .timer — позволяет запускать модули по расписанию;
  • .socket — предоставляет службам поддержку механизма сокет-активации;
  • .slice — отвечает за создание контейнера cgroups;
  • .device — позволяет реагировать на подключение устройств;
  • .path — управляет иерархией файловой системы.

Утилита systemctl

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

systemctl опции команда служба служба..

Популярные команды:

  • list-units - посмотреть все службы (юниты) которые сейчас загружены в память, аналог опции -t
  • list-sockets - посмотреть все сокеты служб, которые сейчас загружены в память
  • list-timers - посмотреть список таймеров, загруженных в память
  • start - запустить службу linux
  • stop - остановить службу linux
  • reload - попросить службу перечитать свою конфигурацию из файловой системы
  • restart - перезапустить службу
  • try-restart - перезапустить службу, только если она запущена
  • reload-or-restart - попросить службу обновить свою конфигурацию, если не поддерживается просто выполнить перезапуск службы linux
  • isolate - запустить только одну службу вместе с ее зависимостями, все остальные остановить
  • kill - отправить сигнал завершения процессу используется вместе с опциями --signal и --kill-who
  • clean - удалить все данные, которые касаются указанной службы, сюда входит кэш, логи, данные выполнения
  • is-active - проверить запущена ли служба linux
  • is-failed - проверить не завершилась ли служба с ошибкой
  • status - посмотреть состояние и вывод службы
  • show - посмотреть параметры управления службой в Linux
  • cat - посмотреть содержимое юнит файла в текстовом виде
  • reset-failed - очистить состояние failed для служб, которые завершились с ошибкой
  • list-dependencies - посмотреть зависимости службы linux
  • list-unit-files - вывести все установленные файлы служб
  • enable - добавить службу в автозагрузку
  • disable - удалить службу из автозагрузки
  • is-enabled - проверить если ли уже служба в автозагрузке
  • reenable - сначала выполнить disable потом enable для службы
  • list-jobs - все выполняющиеся задачи Systemd.
  • snapshot - сохранить состояние служб, чтобы потом восстановить
  • daemon-reload - обновить конфигурацию юнитов для всех служб
  • mask - сделать юнит недоступным
  • unmask - вернуть файл службы linux
  • link - добавить юнит файл, который расположен не в стандартной папке для юнитов
  • revert - вернуть юнит до состояния по умолчанию
  • edit - отредактировать параметры службы не изменяя основной файл юнита.

Основные опции:

  • -t, --type - отфильтровать список служб по типу
  • --state - отфильтровать список служб по состоянию
  • -a, --all - показать все известные службы, даже не запущенные
  • -q - минимальный вывод
  • --version - версия программы
  • --no-pager - не использовать постраничную навигацию
  • --no-legend - не выводить подробное описание

Управление службами Linux

Список запущенных служб

systemctl list-units

Список всех служб

В том числе не загруженных

systemctl list-unit-files

Поиск службы по имени

systemctl list-unit-files 'mysql*'

Запуск службы

systemctl start имя_службы.service

Остановка службы

systemctl stop имя_службы.service

Перезапуск службы

systemctl restart nginx

Состояние службы

systemctl status имя_службы

Автозагрузка службы

systemctl enable nginx

Редактирование файла службы

systemctl edit --full nginx

Удаление (маскировка) службы

systemctl mask nginx

Источники

  1. https://ru.wikipedia.org/wiki/Systemd
  2. https://losst.pro/upravlenie-sluzhbami-linux