innotifywait 跟踪更改排除根操作

innotifywait track changes exclude root actions

我正在使用 innotifywait 来跟踪用户的文件更改,并且能够通过将文件记录到日志文件来有效地跟踪文件是否 created/edited/deleted 使用 innotifywait 工具。

但是,当执行操作时,即 rsync,所有更改也会写入日志文件。

这是执行 rsync 的示例:

Mon Nov 23 15:42:56 .sidebar.php.KNYJir:DELETED
Mon Nov 23 15:42:56 .sidebar.php.KNYJir:DELETED
Mon Nov 23 15:42:56 .sidebar.php.KNYJir:DELETED
Mon Nov 23 15:42:56 sidebar.php

下面附上我正在使用的命令:

/usr/bin/inotifywait -e create,delete,modify,move -mrq --format %w%f 

然后我将它传送到一个无休止的 while 循环来处理和测试更改的文件是否存在以确定该文件是否存在以确定它是否是一个 create/modify/delete 操作。

我们是否可以排除 root 执行的操作的日志记录?

我认为这是不可能的,inotifywatch 肯定不行。 inotify api 本身根本不提供该信息。正如联机帮助页所述:

The inotify API provides no information about the user or process that triggered the inotify event. In particular, there is no easy way for a process that is monitoring events via inotify to distinguish events that it triggers itself from those that are triggered by other processes.

您可以做的是根据文件名进行过滤。或者,如果您知道进行额外更改的进程,请与它自己的日志文件进行比较。