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

status=240/LOGS_DIRECTORY в systemd

Код 240/LOGS_DIRECTORY относится к каталогу в /var/log для служб, которые пишут собственные файлы журнала. Отказ обычно означает, что /var/log переполнен или каталог остался от прежней установки с другим владельцем.

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

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

  1. /var/log переполнен

    Это самая частая причина. Журналы копятся годами: собственные файлы служб без настроенной ротации, журнал systemd без ограничения размера, дампы памяти.

  2. Каталог journald не пускает службу из-за особых прав

    В /var/log лежит каталог journal с особыми правами и группой systemd-journal. Попытка объявить LogsDirectory=journal или вложенный в него путь приводит к конфликту.

  3. Каталог создан вручную с правами 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

Решение

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

1. /var/log переполнен
Почему происходит
Это самая частая причина. Журналы копятся годами: собственные файлы служб без настроенной ротации, журнал 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
2. Каталог journald не пускает службу из-за особых прав
Почему происходит
В /var/log лежит каталог journal с особыми правами и группой systemd-journal. Попытка объявить LogsDirectory=journal или вложенный в него путь приводит к конфликту.
Как проверить
Посмотрите значение параметра и права соседних каталогов.
systemctl show myapp.service -p LogsDirectory
ls -ld /var/log/journal
Как исправить
Выберите отдельное имя каталога, не пересекающееся с journal, например LogsDirectory=myapp.
3. Каталог создан вручную с правами 0700 от root
Почему происходит
Администратор создаёт каталог заранее и закрывает права, а служба работает от другого пользователя — привести владельца в порядок 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

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

Где встречается чаще всего

Источники

  • systemd.exec(5)
    240 EXIT_LOGS_DIRECTORY: не удалось подготовить каталог, см. LogsDirectory=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено на заполненном /var/log.
    собственная проверка, systemd 255
    сверено 15 сентября 2026