Linux
我的主要目標是監視 Tomcat 目錄,如果有任何使用者修改了 Tomcat 目錄中的文件;在日誌中列印該使用者名;
#!/bin/bash watchDir="$1" watchDir2="$2" date1=$(date '+%Y-%m-%d-%H:%M:%S') inotifywait -m -r --exclude \.log "$watchDir" "$watchDir2" -e attrib,delete,delete_self,close,close_write,close_nowrite,create,open,modify,move,moved_to,moved_from | while read -r file; do name=$(stat -c '%U' $file 2>/dev/null) date=$(stat -c %Y $file 2>/dev/null | awk '{print strftime("%d-%m-%Y %T", $1,$2)}') fileName=${file/* CREATE /} echo "[${date%.*}]" "File: '$fileName' User: '$name'" >> /var/log/inotify/inotify-$date1.log done
經過大量研究,我發現這些限制很有用;查找更改文件的使用者不適用於 inotify。
請閱讀限制http://manpages.ubuntu.com/manpages/bionic/man7/inotify.7.html
限制和警告
inotify API 不提供有關觸發 inotify 事件的使用者或程序的資訊。特別是,對於通過 inotify 監視事件的程序來說,沒有簡單的方法來區分它自己觸發的事件和其他程序觸發的事件。