Что такое цель, служба и сокет systemd?

Что такое цель, служба и сокет systemd?

Я знаю, что все они являются файлами юнитов, но я не могу понять их особое значение. Я думаю, что цели похожи на демоны, а сокеты — то же самое, что и сокеты (IP + порт), но также с номерами инодов. Может ли кто-нибудь объяснить их простыми словами?

решение1

Подразделения обслуживания:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

systemd.service(5)

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

Блоки розеток:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

systemd.сокет(5)

С другой стороны, сокетные блоки на самом деле не запускают демонов сами по себе. Вместо этого они просто сидят и слушают IP-адрес и порт или сокет домена UNIX, и когда что-то подключается к нему, запускается демон, для которого предназначен сокет, и соединение передается ему.

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

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

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

systemd.цель(5)

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

Например, multi-user.targetэто то, под чем сгруппировано большинство демонов, и его необходимо basic.targetактивировать, а это значит, что все службы, сгруппированные под этим, basic.targetбудут запущены раньше тех, что находятся в multi-user.target.

решение2

Документация по systemd великолепна для такого относительно нового проекта. Для началацели, от man systemd.target:

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

Эти "группы единиц" охватывают множество различных функций, из basic.targetкоторых по сути охватывает загрузку системы, вплоть до всего, от dbus, gettys, точек монтирования до swap и таймеров. Вы можете увидеть полный список с помощью man systemd.special.

услугаФайлы являются основными единицами для запуска процессов, контролируемых systemd. Опять же, из man systemd.service:

Файл конфигурации модуля, имя которого заканчивается на .service, кодирует информацию о процессе, контролируемом и контролируемом systemd.

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

Окончательно,Розетки, от man systemd.socket:

Файл конфигурации устройства, имя которого заканчивается на «.socket», кодирует информацию о сетевом сокете IPC или файловой системе FIFO, контролируемой и контролируемой systemd, для активации на основе сокета.

Они охватывают сокет в файловой системе или в Интернете, а также классические FIFO в качестве транспорта. Каждый сокетный блок имеет соответствующий сервисный блок, который запускается, если первое соединение приходит на сокет или FIFO.

В дополнение к этим manстраницам стоит прочитать серию постов в блоге Леннарта,systemd для администраторов, в котором подробно рассматривается архитектура и реализация systemd (в настоящее время в серии 20 публикаций).

Связанный контент