Отслеживаем изменения файла/папки и логируем с таймстампом, при установленном
ALERT_WEBHOOK отправляем короткий POST. Требуется inotifywait (inotify-tools):#!/usr/bin/env bash
WATCH="$1"; LOG="${2:-/var/log/filewatch.log}"
inotifywait -m -e modify,create,delete,move --format '%T %w %e %f' --timefmt '%F %T' "$WATCH" |
while read -r ts path ev file; do
echo "$ts $path $ev $file" >> "$LOG"
[ -n "$ALERT_WEBHOOK" ] && curl -s -X POST -H 'Content-Type: application/json' --data "{\"text\":\"$ts $path $ev $file\"}" "$ALERT_WEBHOOK" >/dev/null 2>&1
done
Файл
/var/log/filewatch.log начнёт пополняться строками вида:YYYY-MM-DD HH:MM:SS /path MODIFY filename.Запускаем скрипт в фоне (например, через
nohup), чтобы он работал независимо от сессии:nohup /usr/local/bin/file-monitor.sh /path/to/watch /var/log/filewatch.log >/dev/null 2>&1 &
Теперь скрипт работает в фоне,
PID виден через pgrep -f file-monitor.sh.Проверка работоспособности:
tail -n 3 /var/log/filewatch.log
Пример ожидаемого вывода
2025-11-11 12:34:01 /path/to/watch MODIFY important.conf
Остановка/очистка. Убираем процесс-монитор:
pkill -f file-monitor.sh && echo "Остановлено" || echo "Процесс не найден"
🔥 В результате скрипт даёт простой и надёжный способ отслеживать изменения файлов и записывать события в лог.
🚪 Linux Ready | #практика