Linux

我的主要目標是監視 Tomcat 目錄,如果有任何使用者修改了 Tomcat 目錄中的文件;在日誌中列印該使用者名;

  • February 2, 2021
#!/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 監視事件的程序來說,沒有簡單的方法來區分它自己觸發的事件和其他程序觸發的事件。




引用自:https://unix.stackexchange.com/questions/629843