SystemdDoctor
служба не работает файлы пути

Not a directory в журнале службы

Сообщение Not a directory (номер 20, ENOTDIR) означает, что в середине пути встретился обычный файл. Частый случай — путь вида /var/lib/myapp/data, где myapp оказался файлом, а не каталогом.

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

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

  1. В середине пути находится файл

    Программа или установщик создал файл там, где ожидался каталог. Дальше по пути пройти нельзя.

  2. Символическая ссылка ведёт на файл

    Ссылка выглядит каталогом в выводе, но указывает на файл. Обращение к пути внутри неё даёт эту ошибку.

  3. Путь в настройках указан с лишним элементом

    Опечатка вроде /etc/myapp.conf/config даёт эту ошибку: первый элемент — файл.

Диагностика

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

Тип объекта на каждом уровне пути.

namei -l /путь/из/сообщения

Точный путь из сообщения.

journalctl -u myapp.service -n 20 --no-pager | grep -i "not a directory"

Решение

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

1. В середине пути находится файл
Почему происходит
Программа или установщик создал файл там, где ожидался каталог. Дальше по пути пройти нельзя.
Как проверить
Пройдите по пути целиком.
namei -l /var/lib/myapp/data/state.db
Как исправить
Уберите или переименуйте лишний файл и создайте каталог. Команда прохода по пути сразу показывает, на каком уровне обрыв.
2. Символическая ссылка ведёт на файл
Почему происходит
Ссылка выглядит каталогом в выводе, но указывает на файл. Обращение к пути внутри неё даёт эту ошибку.
Как проверить
Посмотрите, куда ведёт ссылка.
ls -l /var/lib/myapp && readlink -f /var/lib/myapp
Как исправить
Исправьте ссылку так, чтобы она указывала на каталог.
3. Путь в настройках указан с лишним элементом
Почему происходит
Опечатка вроде /etc/myapp.conf/config даёт эту ошибку: первый элемент — файл.
Как проверить
Посмотрите путь из сообщения и настройки.
journalctl -u myapp.service -n 20 --no-pager | grep -i "not a directory"
Как исправить
Исправьте путь в настройках или в unit-файле.

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

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

myapp[4100]: error: open /var/lib/myapp/data/state.db: not a directory

$ namei -l /var/lib/myapp/data/state.db
 d /
 d var
 d lib
 - myapp
 ? data/state.db - Not a directory

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

Источники

  • open(2): ошибка ENOTDIR документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено файлом на месте ожидаемого каталога.
    собственная проверка, systemd 255
    сверено 15 сентября 2026