status=240/LOGS_DIRECTORY в systemd
Код 240/LOGS_DIRECTORY относится к каталогу в /var/log для служб, которые пишут собственные файлы журнала. Отказ обычно означает, что /var/log переполнен или каталог остался от прежней установки с другим владельцем.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
/var/log переполнен
Это самая частая причина. Журналы копятся годами: собственные файлы служб без настроенной ротации, журнал systemd без ограничения размера, дампы памяти.
-
Каталог journald не пускает службу из-за особых прав
В /var/log лежит каталог journal с особыми правами и группой systemd-journal. Попытка объявить
LogsDirectory=journalили вложенный в него путь приводит к конфликту. -
Каталог создан вручную с правами 0700 от root
Администратор создаёт каталог заранее и закрывает права, а служба работает от другого пользователя — привести владельца в порядок systemd не может, если внутри уже лежат чужие файлы.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает путь каталога и причину отказа.
journalctl -xeu myapp.service --no-pager -n 20Место на разделе и сколько из него занимает журнал systemd.
df -h /var/log && journalctl --disk-usageНастройки каталога и куда вообще идёт вывод службы — иногда каталог не нужен вовсе.
systemctl show myapp.service -p LogsDirectory -p LogsDirectoryMode -p StandardOutputРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Это самая частая причина. Журналы копятся годами: собственные файлы служб без настроенной ротации, журнал systemd без ограничения размера, дампы памяти.
- Как проверить
-
Посмотрите занятость раздела, крупнейшие каталоги и размер журнала systemd.
df -h /var/log sudo du -sh /var/log/* | sort -h | tail -8 journalctl --disk-usage
- Как исправить
-
Сожмите журнал systemd до разумного размера, настройте logrotate для собственных файлов служб и удалите старые дампы.
sudo journalctl --vacuum-size=500M sudo systemctl restart myapp.service
- Почему происходит
- В /var/log лежит каталог journal с особыми правами и группой systemd-journal. Попытка объявить
LogsDirectory=journalили вложенный в него путь приводит к конфликту.
- Как проверить
-
Посмотрите значение параметра и права соседних каталогов.
systemctl show myapp.service -p LogsDirectory ls -ld /var/log/journal
- Как исправить
-
Выберите отдельное имя каталога, не пересекающееся с journal, например
LogsDirectory=myapp.
- Почему происходит
- Администратор создаёт каталог заранее и закрывает права, а служба работает от другого пользователя — привести владельца в порядок systemd не может, если внутри уже лежат чужие файлы.
- Как проверить
-
Посмотрите владельца и права.
ls -ld /var/log/myapp && ls -la /var/log/myapp | head
- Как исправить
-
Передайте каталог пользователю службы или удалите его и позвольте systemd создать заново по параметру
LogsDirectory=.sudo chown -R app:app /var/log/myapp
Пример вывода
Раздел /var/log заполнен старыми журналами. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-15 09:10:02 MSK; 1s ago
Process: 4400 ExecStart=/usr/local/bin/myapp (code=exited, status=240/LOGS_DIRECTORY)
systemd[1]: myapp.service: Failed to set up special execution directory in /var/log: No space left on device
Связанные ошибки
- status=209/STDOUT в systemd Код 209/STDOUT: systemd не смог настроить стандартный вывод службы. Чаще всего виноват путь в StandardOutput=append: или file:.
- No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- status=239/CACHE_DIRECTORY в systemd Код 239/CACHE_DIRECTORY: не удалось подготовить каталог кеша службы в /var/cache из CacheDirectory=.
- status=238/STATE_DIRECTORY в systemd Код 238/STATE_DIRECTORY: не удалось подготовить постоянный каталог службы в /var/lib из StateDirectory=.
- Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
- Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.
- Elasticsearch: индексы переведены в режим только для чтения Elasticsearch блокирует запись при нехватке места: пороги watermark. Как снять блокировку правильно.
- Input/output error в журнале службы Ошибка ввода-вывода: проблемы носителя, отвалившийся сетевой ресурс, повреждённая файловая система. Что проверять срочно.
Где встречается чаще всего
Источники
-
systemd.exec(5)
240 EXIT_LOGS_DIRECTORY: не удалось подготовить каталог, см. LogsDirectory=. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на заполненном /var/log.