SystemdDoctor
Подстановки (%i, %n, %h) любая секция

Подстановки в unit-файлах systemd: %i, %n, %h и другие

Короткие обозначения, которые systemd заменяет значениями при разборе unit-файла: имя unit, имя экземпляра шаблона, имя машины, домашний каталог пользователя службы.

Что делает

Подстановки делают unit-файлы переносимыми и позволяют обходиться одним шаблоном вместо десяти похожих файлов. Чаще всего используются %i в шаблонных unit и %n в оповещениях о сбоях.

Сам знак процента записывается удвоением: %%. Одиночный процент перед незнакомой буквой systemd сочтёт неверной подстановкой и отметит это в журнале.

Где ставится. В большинстве параметров любой секции. Точный список допустимых подстановок есть в документации.

Значения

ЗначениеЧто происходит
%iчасть имени после @ в шаблонном unit, как есть.
%Iто же, с раскодированными служебными последовательностями.
%nполное имя unit с расширением.
%Nимя unit без расширения.
%hдомашний каталог пользователя службы.
%Hимя машины.
%tкаталог времени работы: /run для системных служб.
%Sкаталог постоянного состояния: /var/lib для системных служб.

Пример

Шаблон, где имя экземпляра задаёт и файл настроек, и порт.

# /etc/systemd/system/site@.service
[Service]
EnvironmentFile=/etc/sites/%i.env
WorkingDirectory=/srv/sites/%i
ExecStart=/usr/local/bin/site-server --config /etc/sites/%i.conf
StandardOutput=append:%t/sites-%i.log

Одного файла достаточно для любого числа сайтов: systemctl enable --now site@example.org.

Типичные ошибки

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

%i в обычном unit пуста — параметры окажутся неполными.

Если в имени экземпляра есть косая черта, нужна %I и экранирование через systemd-escape.

Не все подстановки доступны во всех параметрах: часть работает только в командах Exec*=.

Связанные ошибки

Рядом стоящие параметры

Где важен на практике

Источники

  • systemd.unit(5) официальная документация
    сверено 15 сентября 2026
  • systemd-escape(1) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026