在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
规则来监控特定的文件系统事件。