SystemdDoctor
служба не работает загрузка каталоги

systemd-tmpfiles-setup: часть каталогов не создана

Служба подготовки создаёт каталоги и файлы времени работы по описаниям из нескольких каталогов. Её отказ означает, что часть каталогов не создана, и службы, рассчитывающие на них, упадут позже — причём с совершенно другими сообщениями.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Два описания задают один путь по-разному

    Описания читаются из нескольких каталогов с приоритетом. Конфликт по одному пути даёт ошибку и пропуск строки.

  2. Владелец из описания не существует

    Описание задаёт владельца по имени. Если пользователь не создан, строка не применяется.

  3. Путь ведёт через несуществующий каталог

    Служба не создаёт промежуточные каталоги там, где это не задано. Строка отказывает целиком.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Что служба подготовки не смогла создать.

journalctl -u systemd-tmpfiles-setup -b --no-pager

Итоговый набор описаний со всеми переопределениями.

sudo systemd-tmpfiles --cat-config | head -40

Прогон без изменений: покажет конфликты и ошибки.

sudo systemd-tmpfiles --create --dry-run 2>&1 | head -20

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Два описания задают один путь по-разному
Почему происходит
Описания читаются из нескольких каталогов с приоритетом. Конфликт по одному пути даёт ошибку и пропуск строки.
Как проверить
Посмотрите конфликтующие описания.
journalctl -u systemd-tmpfiles-setup -b --no-pager | tail -15
sudo systemd-tmpfiles --cat-config 2>/dev/null | grep -n "/run/myapp"
Как исправить
Уберите дублирующее описание или переопределите его файлом с большим приоритетом в каталоге настроек администратора.
2. Владелец из описания не существует
Почему происходит
Описание задаёт владельца по имени. Если пользователь не создан, строка не применяется.
Как проверить
Посмотрите сообщение и наличие пользователя.
journalctl -u systemd-tmpfiles-setup -b --no-pager | grep -iE "unknown user|unknown group"
getent passwd myapp
Как исправить
Создайте пользователя до подготовки каталогов, объявив его в описании пользователей. Тогда порядок будет верным при каждой загрузке.
3. Путь ведёт через несуществующий каталог
Почему происходит
Служба не создаёт промежуточные каталоги там, где это не задано. Строка отказывает целиком.
Как проверить
Посмотрите путь и его родителей.
journalctl -u systemd-tmpfiles-setup -b --no-pager | grep -iE "Failed to create"
namei -l /var/lib/myapp/data 2>/dev/null
Как исправить
Опишите промежуточные каталоги отдельными строками или используйте параметры службы вместо описаний подготовки: для каталогов службы это проще и надёжнее.

Пример вывода

Два описания задают один каталог с разными правами. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

systemd-tmpfiles[640]: /usr/lib/tmpfiles.d/myapp.conf:1: Duplicate line for path "/run/myapp", ignoring.
systemd-tmpfiles[640]: Failed to create directory or subvolume "/var/lib/myapp/data": No such file or directory
systemd[1]: systemd-tmpfiles-setup.service: Main process exited, code=exited, status=1/FAILURE

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

Источники

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