Path units systemd: событие изменения файла не заменяет протокол его готовности
Фотография конкретного исполнения не приложена.
Каталог входящих файлов удобно наблюдать через path unit, но появление события ещё не означает завершение записи отправителем. В справочнике 262 PathChanged связан, в частности, с закрытием файла после записи, а PathModified реагирует также на сами записи. Выбор триггера должен соответствовать способу передачи данных.
Path units используют inotify и наследуют его ограничения. Например, изменения на удалённой NFS файловой системе, выполненные другой машиной, нельзя считать надёжно наблюдаемыми этим механизмом. Поэтому одинаковый путь в конфигурации не обеспечивает одинаковое поведение локального диска и сетевого каталога.
DirectoryNotEmpty проверяет наличие файлов, в том числе при начальной активации. После завершения вызванной службы условия проверяются снова. Если приложение оставило входящие данные на месте и постоянно выходит с ошибкой, возможен быстрый цикл запусков до срабатывания ограничителя. Менеджер не создаёт автоматически реестр успешно обработанных файлов.
В проекте определяют признак готовности, владение очередью и подтверждение обработки. На стенде проверяют медленную запись, несколько файлов, перезапуск обработчика и ошибочный файл. Каждое задание должно иметь понятный дальнейший статус; число уведомлений об изменении каталога не используют как счётчик доставленных прикладных документов.
Основание — Official systemd manual edition262, cited sections only, разделы systemd.path Description; PathChanged; PathModified; DirectoryNotEmpty. Сохранён текст публичной справочной публикации; конкретная реализация может поддерживать только часть возможностей. Материал относится к справочникам systemd 262. Установленные Linux-дистрибутив, сборка systemd и возможности ядра не проверялись; изменения служб и настроек не выполнялись.