#!/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
答案1
经过大量研究后,我发现这些限制很有用;使用 inotify 无法查找更改文件的用户。
请阅读限制http://manpages.ubuntu.com/manpages/bionic/man7/inotify.7.html
限制和注意事项
inotify API 不提供有关触发 inotify 事件的用户或进程的信息。特别是,对于通过 inotify 监视事件的进程来说,没有简单的方法来区分它自己触发的事件和其他进程触发的事件。