SystemdDoctor
systemd-escape

systemd-escape: имена unit из путей и строк

Преобразует произвольную строку или путь в форму, допустимую для имени unit: заменяет косые черты дефисами, а служебные символы — последовательностями вида \x2d.

Что делает

Главное применение — имена точек монтирования. Для пути /srv/data-2024 имя unit будет не srv-data-2024.mount, а srv-data\x2d2024.mount: дефис в имени каталога тоже экранируется. Вручную это почти всегда делают неверно.

Второе применение — имена экземпляров шаблонов, когда в значении есть косая черта или пробел.

Где ставится. Команда в терминале.

Значения

ЗначениеЧто происходит
systemd-escape -p --suffix=mount /srv/dataимя mount-unit для пути.
systemd-escape --template=backup@.service /srv/dataимя экземпляра шаблона из пути.
systemd-escape -u имяобратное преобразование.

Пример

Имя unit для каталога с дефисом в названии.

$ systemd-escape -p --suffix=mount /srv/data-2024
srv-data\x2d2024.mount

$ systemd-escape --template=backup@.service /srv/data-2024
backup@srv-data\x2d2024.service

Выводом команды и нужно называть файл. Любая самодеятельность в экранировании заканчивается тем, что systemd отказывается загружать unit.

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

Дефис в пути обязательно экранируется: имя, собранное вручную, чаще всего неверно.

Для mount-unit имя обязано соответствовать точке монтирования, иначе unit не загрузится.

Обратное преобразование нужно, когда читаете чужие имена: -u вернёт исходный путь.

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

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

Источники

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