TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #574 687
systemd.path: запуск действия при изменении файла

Многие задачи автоматизации до сих пор решают через бесконечные циклы:

while true; do
if [ -f /tmp/reload ]; then
systemctl restart myapp
rm /tmp/reload
fi
sleep 5
done


Работает, но процесс постоянно висит в памяти и каждые несколько секунд проверяет состояние файловой системы.

▪️ Что есть лучше

В systemd существует специальный тип юнитов — .path.

Он использует inotify и реагирует на реальные изменения файлов или директорий, а не занимается постоянным опросом.

Пример: нужно перезапускать сервис после изменения конфигурации.

Создаем path-юнит:

[Path]
PathModified=/etc/myapp/config.yml

[Install]
WantedBy=multi-user.target
И связанный сервис:
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart myapp.service
Активируем:
systemctl daemon-reload
systemctl enable --now myapp.path


Теперь изменение файла автоматически вызовет запуск сервиса.

▪️ Что умеет отслеживать

Не только изменение файла:

PathExists=/tmp/file
PathChanged=/var/log/app.log
DirectoryNotEmpty=/var/spool/tasks


Например, можно запускать обработчик сразу после появления нового файла в директории или при заполнении очереди задач.

▪️ Почему это удобно
Вместо собственных демонов, cron и циклов с sleep получаем событийную модель: пока ничего не происходит - не расходуются ресурсы. Как только происходит нужное событие - systemd запускает действие.

BashTex 📱 #bash
  • 👍 13
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
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 →