MyTetra Share
Делитесь знаниями!
Что означает символ "@" в имени файла юнита systemd?
Время создания: 11.04.2024 16:14
Текстовые метки: linux, systemd, юнит, unit, символ, "@", собака, собачка, обезьяна, обезьянка, at, шаблон, шаблонный, экземпляр, идентификатор
Раздел: Компьютер - Linux - Управление сервисами (демонами)
Запись: xintrea/mytetra_syncro/master/base/1712841273nfapagedd2/text.html на raw.github.com

Некоторые юниты содержат в названии символ "@". Имеются в виду названия вида название@строка.service. Это т.н. экземпляры юнита-шаблона, настоящее имя которого не содержит части строка (т.е. имеет вид название@.service).


Таким образом, имя сервиса, которое содержит "@", автоматически свидетельствует о том, что в имени этого сервиса используются шаблоны.


Строка в таком случае называется идентификатором экземпляра и передаётся юниту-шаблону в качестве аргумента при вызове функций systemctl. В содержимом файла юнита, чтобы получить данную строку (т. е. идентификатор), можно использовать макроподстановку %i (что означает instance name).

Если говорить точнее, systemd сначала попытается найти юнит, название которого полностью совпадёт с название@строка.суффикс, и лишь в случае неудачи создаст экземпляр шаблона название@.суффикс. Тем не менее, такие "конфликты" довольно редки, так как по соглашению символ "@" должен использоваться только в названиях юнитов-шаблонов.

Также помните, что вызвать юнит-шаблон без идентификатора экземпляра (строка) не получится, поскольку в этом случае нечего будет подставить вместо спецификатора %i. Другими словами, при написании в текстах юнитов имени такого юнита или при любом другом обращения к шаблонному юниту, обязательно нужно не пропускать строку идентификатора экземпляра, которая находится между "@" и точкой ".".


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования