TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #6003 2.16K
systemd.path – реагируем на события файловой системы

Как мы уже рассказывали systemd предоставляет администраторам простые, но в тоже время мощные инструменты на все случаи жизни.

Сегодня мы рассмотрим еще один тип юнита – path, который предназначен для контроля событий файловой системы. Сейчас он позволяет реагировать на создание, изменение или модификацию файлов или на появление файлов в директории.

Создадим для примера юнит /etc/systemd/system/my_name.path

И внесем в него следующие строки:

[Unit]
Description= Path test

[Path]
PathExists=/a/b/c/filename

[Install]
WantedBy=multi-user.target


В общем и целом, стандартный юнит, ничего необычного, кроме секции Path, в директиве PathExists – путь, который мы отслеживаем.

Если секция Path не содержит директивы Unit, то будет найден и запушен одноименный сервис, т.е. my_name.service.

Если требуется запуск другой службы, то ее требуется указать явно, т.е.:

[Path]
PathExists=/a/b/c/filename
Unit=123.service


Для начала работы юнит нужно запустить и добавить в автозагрузку:

systemctl start my_name.path
systemctl enable my_name.path


Или одной командой:

systemctl enable --now my_name.path


В секции [Path] можно одновременно отслеживать несколько путей, запуск юнита произойдет при выполнении любого условия. Однако если хоть одно условие содержит пустую строку, то все директивы будут проигнорированы и юнит работать не будет.

Для отслеживания событий можно использовать следующие директивы:

▫️ PathExists= проверяет существование файла

▫️ PathExistsGlob= тоже самое, но позволяет использовать шаблоны подстановки

▫️ PathChanged= проверяет изменение файла, срабатывает по окончанию редактирования

▫️ PathModified= проверяет модификацию файла, срабатывает сразу, не дожидаясь окончания редактирования.

▫️ DirectoryNotEmpty= проверяет появление файлов в директории

Дополнительно с последней можно использовать:

▫️ MakeDirectory= при указании true каталог для отслеживания будет автоматически создан

▫️ DirectoryMode= права на созданный каталог, по умолчанию 0755

Еще две опции позволяют задать временные лимиты срабатывания.

▫️ TriggerLimitIntervalSec= юнит будет срабатывать не чаще указанного промежутка времени, по умолчанию 2 секунды.

▫️ TriggerLimitBurst= количество активаций за указанное время, по умолчанию 200. Таким образом если произойдет более 200 срабатываний за 2 секунды, то юнит перейдет в режим сбоя не будет работать до перезапуска.

Отдельно следует отметить, что systemd.path работает только с локальными файловыми системами и не будет работать с SMB или NFS.
  • 👍 23
  • ❤ 4
  • 👌 2
  • 🔥 1
More from @interface31
  1. Sep 29, 2026Что крупные заказчики проверяют на пилоте NGFW Чем крупнее сеть, тем выше требования к NGF…
  2. Sep 28, 2026Как провайдер определит, что у меня Mikrotik Таким вопросом задаются многие читатели и оче…
  3. Sep 28, 2026Геймеры здесь?! F6 выпустила квест-игру Root Cause — в ней вы на целый год становитесь дир…
  4. Sep 28, 2026Ностальгия… Ностальгия… - Мы тут тебе старенький компьютер привезем… Старенький, что сейча…
  5. Sep 28, 2026Post #6800
  6. Sep 27, 2026Ой, а что это случилось? Куда делась лицензия? Программные лицензии 1С - полное дно!!! На…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →