LogsDirectory=: каталог для собственных журналов службы
Создаёт каталог в /var/log с владельцем-пользователем службы. Нужен службам, которые пишут собственные файлы журнала вместо журнала systemd.
Что делает
Параметр решает две задачи сразу: каталог появляется с правильным владельцем, и он остаётся доступным для записи при жёсткой изоляции. Без него запись в /var/log при ProtectSystem=strict не проходит.
Ротацию systemd не делает: за неё отвечает logrotate или сама программа. Каталог, оставленный без присмотра, со временем заполнит раздел.
Где ставится. В секции [Service]. Значение — имя каталога без пути.
Значения
| Значение | Что происходит |
|---|---|
LogsDirectory=myapp | создаст /var/log/myapp. |
LogsDirectoryMode=0750 | права на каталог. |
Пример
Служба со своим файлом журнала и ротацией.
[Service]
LogsDirectory=myapp
StandardOutput=append:/var/log/myapp/out.log
StandardError=append:/var/log/myapp/err.log
# /etc/logrotate.d/myapp
# /var/log/myapp/*.log { weekly rotate 8 compress missingok notifempty }
Без настройки ротации файлы будут расти бесконечно. Переполненный /var/log останавливает не только эту службу.
Типичные ошибки
Ротация не входит в обязанности systemd: настраивайте logrotate отдельно.
Имя journal для каталога недопустимо: оно занято журналом systemd.
Полный путь в значении недопустим: только имя.
Связанные ошибки
- status=240/LOGS_DIRECTORY в systemdКод 240/LOGS_DIRECTORY: не удалось подготовить каталог журналов службы в /var/log из LogsDirectory=.
- No space left on device в журнале службыНет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- status=209/STDOUT в systemdКод 209/STDOUT: systemd не смог настроить стандартный вывод службы. Чаще всего виноват путь в StandardOutput=append: или file:.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.exec(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)