在Debian系统中,inotify是一个用于监控文件系统事件的Linux内核子系统。要自定义inotify规则,您可以使用inotify-tools软件包中的inotifywait和inotifywatch命令。以下是如何安装和使用这些工具以及自定义规则的步骤:
首先,确保您的Debian系统已更新到最新状态:
sudo apt update
sudo apt upgrade
然后,安装inotify-tools:
sudo apt install inotify-tools
inotifywait允许您实时监控文件系统事件。以下是一些基本用法示例:
inotifywait -m /path/to/file_or_directory
-m:持续监控,直到手动终止。inotifywait -m -e create,delete,modify /path/to/file_or_directory
-e:指定要监控的事件类型,例如create(创建)、delete(删除)、modify(修改)等。您可以使用逻辑运算符(如|表示“或”,&表示“与”)来组合多个事件:
inotifywait -m -e create,delete,modify -e moved_to,moved_from /path/to/file_or_directory
inotifywait -m -t 60 /path/to/file_or_directory
-t:设置超时时间(秒),在此时间后监控将自动停止。inotifywatch用于收集文件系统事件统计数据。以下是一些基本用法示例:
inotifywatch -m -t 60 -e create,delete,modify /path/to/file_or_directory
-m:持续监控。-t:设置超时时间(秒)。-e:指定要监控的事件类型。inotifywatch -m -t 60 -e create,delete,modify /path/to/file_or_directory --format '%w %e %T' --timefmt '%Y-%m-%d %H:%M:%S'
--format:自定义输出格式。--timefmt:自定义时间格式。假设您想要监控/var/log目录下的所有.log文件,并在文件被修改时执行某个脚本。您可以创建一个简单的shell脚本来实现这一功能:
#!/bin/bash
LOG_DIR="/var/log"
SCRIPT_PATH="/path/to/your/script.sh"
inotifywait -m -e modify --format '%w%f' "${LOG_DIR}"/*.log | while read FILE
do
echo "File modified: ${FILE}"
/path/to/your/script.sh "${FILE}"
done
将上述脚本保存为monitor_logs.sh,并赋予执行权限:
chmod +x monitor_logs.sh
然后运行脚本:
./monitor_logs.sh
这样,每当/var/log目录下的.log文件被修改时,脚本script.sh将被执行,并传递修改后的文件路径作为参数。
通过这些方法,您可以根据需要自定义inotify规则来监控特定的文件系统事件。