Какова цель systemd, сервис и сокет?

35

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

drpaneas
источник
3
Системные manстраницы являются образцовыми: вы смотрели man systemd.{service,socket,target}?
Джейсонвриан
@jasonwryan На самом деле я посмотрел и не имею полного ответа. Я смотрю эту ветку, чтобы я тоже мог учиться. Я знаю, что такое сервис, сокет, но есть пробел, когда дело доходит до цели. Я все еще исследую и отвечу на вопрос, если он станет достаточно ясным для меня.
Л.Д. Джеймс

Ответы:

40

Сервисные единицы:

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.socket (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.target (5)

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

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

kyrias
источник
11

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

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

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

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

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

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

Наконец, розетки , из man systemd.socket:

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

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

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

jasonwryan
источник