在Unix系统中,我如何监视(类似于“tail”工具的方式)目录中对文件的更改 - 包括新创建的文件或大小更改等。寻找命令行工具而不是需要安装的工具。
大多数 Unix 变种都有相应的 API,但并未标准化。在 Linux 上,可以使用 inotify。在命令行中,您可以使用 inotifywait
。以下是用法示例:
inotifywait -m /path/to/dir | while read -r dir event name; do
case $event in
OPEN) echo "The file $name was created or opened (not necessarily for writing)";;
WRITE) echo "The file $name was written to";;
DELETE) echo "The file $name was deleted ";;
esac
done
通常情况下,Inotify事件类型并不完全符合您想要的通知内容(例如,OPEN事件非常广泛),因此如果最终需要自己创建文件检查,请不要感到难过。
如果你不想安装工具,可以自己编写。这只是一个想法。
使用find
命令创建您目录的基准文件。使用循环或cron作业,使用相同参数find
目录,并检查新文件与基准文件之间的差异。使用像diff
这样的工具来获取差异。
例如:
find /path [other options] >> baseline.txt
while true #or use a cron job
do
find /path [same options] >> listing.txt
diff baseline.txt listing.txt
# do processing here...
mv listing.txt baseline.txt # update the baseline.
sleep 60
done