![나의 주요 목표는 Tomcat 디렉토리를 모니터링하여 사용자가 tomcat 디렉토리의 파일을 수정하는지 확인하는 것입니다.](https://linux55.com/image/186638/%EB%82%98%EC%9D%98%20%EC%A3%BC%EC%9A%94%20%EB%AA%A9%ED%91%9C%EB%8A%94%20Tomcat%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%ED%95%98%EC%97%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20tomcat%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%88%98%EC%A0%95%ED%95%98%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9E%85%EB%8B%88%EB%8B%A4..png)
#!/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를 통해 이벤트를 모니터링하는 프로세스가 자신이 트리거하는 이벤트와 다른 프로세스에 의해 트리거되는 이벤트를 구별하는 쉬운 방법은 없습니다.