systemd
— подсистема инициализации и управления службами в Linux, фактически вытеснившая в 2010-е годы
традиционную подсистему init. Основная особенность — интенсивное распараллеливание запуска служб в процессе
загрузки системы, что позволяет существенно ускорить запуск операционной системы. Основная единица управления —
модуль (юнит), одним из типов модулей являются «службы» — аналог демонов — наборы процессов, запускаемые и
управляемые средствами подсистемы и изолируемые контрольными группами.
Подсистема оперирует специально оформленными файлами конфигурации — модулями (англ. unit). Каждый модуль отвечает
за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому
подобные ресурсы. Существуют специальные типы модулей, которые не несут функциональной нагрузки, но позволяют
задействовать дополнительные возможности systemd, к ним относятся модули типа target, slice, automount и ряд других.
systemd
поддерживает следующие типы модулей:
.target
— позволяет группировать модули, воплощая концепцию уровней запуска;.service
— отвечает за запуск сервисов (служб), также поддерживает вызов интерпретаторов для исполнения пользовательских скриптов;.mount
— отвечает за монтирование файловых систем;.automount
— позволяет отложить монтирование файловых систем до фактического обращения к точке монтирования;.swap
— отвечает за подключение файла или устройства подкачки;.timer
— позволяет запускать модули по расписанию;.socket
— предоставляет службам поддержку механизма сокет-активации;.slice
— отвечает за создание контейнера cgroups;.device
— позволяет реагировать на подключение устройств;.path
— управляет иерархией файловой системы.
В systemd есть специальный инструмент для управления службами в Linux - команда systemctl
. Эта утилита
позволяет делать очень много вещей, начиная от перезапуска службы Linux и проверки ее состояния,
до анализа эффективности загрузки службы. Синтаксис у этой утилиты такой:
systemctl опции команда служба служба..
Популярные команды:
list-units
- посмотреть все службы (юниты) которые сейчас загружены в память, аналог опции -tlist-sockets
- посмотреть все сокеты служб, которые сейчас загружены в памятьlist-timers
- посмотреть список таймеров, загруженных в памятьstart
- запустить службу linuxstop
- остановить службу linuxreload
- попросить службу перечитать свою конфигурацию из файловой системыrestart
- перезапустить службуtry-restart
- перезапустить службу, только если она запущенаreload-or-restart
- попросить службу обновить свою конфигурацию, если не поддерживается просто выполнить перезапуск службы linuxisolate
- запустить только одну службу вместе с ее зависимостями, все остальные остановитьkill
- отправить сигнал завершения процессу используется вместе с опциями --signal и --kill-whoclean
- удалить все данные, которые касаются указанной службы, сюда входит кэш, логи, данные выполненияis-active
- проверить запущена ли служба linuxis-failed
- проверить не завершилась ли служба с ошибкойstatus
- посмотреть состояние и вывод службыshow
- посмотреть параметры управления службой в Linuxcat
- посмотреть содержимое юнит файла в текстовом видеreset-failed
- очистить состояние failed для служб, которые завершились с ошибкойlist-dependencies
- посмотреть зависимости службы linuxlist-unit-files
- вывести все установленные файлы службenable
- добавить службу в автозагрузкуdisable
- удалить службу из автозагрузкиis-enabled
- проверить если ли уже служба в автозагрузкеreenable
- сначала выполнить disable потом enable для службыlist-jobs
- все выполняющиеся задачи Systemd.snapshot
- сохранить состояние служб, чтобы потом восстановитьdaemon-reload
- обновить конфигурацию юнитов для всех службmask
- сделать юнит недоступнымunmask
- вернуть файл службы linuxlink
- добавить юнит файл, который расположен не в стандартной папке для юнитовrevert
- вернуть юнит до состояния по умолчаниюedit
- отредактировать параметры службы не изменяя основной файл юнита.
Основные опции:
-t, --type
- отфильтровать список служб по типу--state
- отфильтровать список служб по состоянию-a, --all
- показать все известные службы, даже не запущенные-q
- минимальный вывод--version
- версия программы--no-pager
- не использовать постраничную навигацию--no-legend
- не выводить подробное описание
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