Ubuntu 上配置 inotify 的实用步骤
一 安装与准备
sudo apt update && sudo apt install -y inotify-toolsuname -a(需 2.6.13 及以上),或检查头文件:ls /usr/include/sys/inotify.h。二 常用监控命令
inotifywait -m -r -e create,modify,delete,move --format '%w%f %e' /path/to/dirinotifywait -m -e modify,close_write,attrib /path/to/fileinotifywatch -r -t 60 /path/to/dir-m 持续监控;-r 递归子目录;-e 指定事件;--format 自定义输出;--timefmt 时间格式三 编写自动化脚本
/usr/local/bin/inotify-monitor.sh:#!/usr/bin/env bash
MON_DIR="/path/to/dir"
LOG="/var/log/inotify.log"
inotifywait -m -r -e create,modify,delete,move --format '%T %w%f %e' "$MON_DIR" | \
while IFS= read -r line; do
echo "$line" | tee -a "$LOG"
# 在此处添加你的业务动作,例如同步、通知等
done
chmod +x /usr/local/bin/inotify-monitor.sh && /usr/local/bin/inotify-monitor.sh。四 作为系统服务运行
sudo nano /etc/systemd/system/inotify-monitor.service[Unit]
Description=Inotify File Monitor
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/inotify-monitor.sh
Restart=always
User=your_username
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reloadsudo systemctl enable --now inotify-monitor.servicesudo systemctl status inotify-monitor.service。五 调整内核参数与故障排查
cat /proc/sys/fs/inotify/max_user_watchessudo sysctl -w fs.inotify.max_user_watches=524288/etc/sysctl.conf 或新建 /etc/sysctl.d/99-inotify.conf,加入
fs.inotify.max_user_watches=524288fs.inotify.max_user_instances、fs.inotify.max_queued_eventssudo sysctl -pfs.inotify.max_user_instances=512fs.inotify.max_user_watches=262144sudo ln -sv /usr/local/lib/libinotify* /usr/lib/sudo ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0。