SystemdDoctor
PathExists= [Path]

PathExists=, PathChanged= и наблюдение за путями

Параметры секции [Path] задают, за чем следит path-unit: существование файла, его изменение, непустой каталог. При срабатывании systemd запускает связанную службу.

Что делает

Разница между вариантами важна на практике. PathExists= срабатывает, когда файл появился, и повторно не сработает, пока тот не исчезнет. DirectoryNotEmpty= срабатывает снова и снова, пока каталог не пуст — именно это нужно для обработки очереди файлов.

Наблюдение работает через уведомления ядра, поэтому на части сетевых файловых систем оно не срабатывает. Для таких случаев остаётся опрос таймером.

Где ставится. В секции [Path]. Запускаемая служба берётся по имени unit или задаётся параметром Unit=.

Значения

ЗначениеЧто происходит
PathExists=/etc/myapp/triggerфайл появился.
PathExistsGlob=/var/spool/myapp/*.jobпоявился файл по образцу.
PathChanged=/etc/myapp/config.ymlфайл изменён и закрыт.
PathModified=/var/log/myapp/out.logфайл изменён, в том числе без закрытия.
DirectoryNotEmpty=/var/spool/myappв каталоге есть файлы; срабатывает повторно.
MakeDirectory=yesсоздать наблюдаемый каталог, если его нет.

Пример

Обработка очереди файлов по мере их появления.

# process-spool.path
[Path]
DirectoryNotEmpty=/var/spool/myapp
MakeDirectory=yes
DirectoryMode=0750

[Install]
WantedBy=paths.target

# process-spool.service — без RemainAfterExit, иначе сработает один раз
[Service]
Type=oneshot
ExecStart=/usr/local/bin/process-spool

Задача обязана завершаться: пока служба активна, новое срабатывание её не запустит.

Типичные ошибки

PathExists= срабатывает однократно: для очереди нужен DirectoryNotEmpty=.

Если служба остаётся активной (RemainAfterExit=yes), повторные срабатывания ничего не делают.

В автозапуск нужно ставить path-unit, а не службу.

На части сетевых файловых систем уведомления ядра не работают, и наблюдение не срабатывает.

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

Рядом стоящие параметры

Источники

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