我们是否有一个工具可以在用户级别跟踪目录的文件级别变化?
另外,
我的要求是这样的 -
这是我想要跟踪的目录/var/lib/docker/volumes/shared/_data-
应该跟踪和记录对此文件夹内任何文件所做的任何更改。在某个时间点,我想查看谁更改了其中的哪个文件。您的代码能帮助实现这一点吗?
查看预期输出(更改的用户/更改的文件/更改的内容)有多容易?
答案1
是的 -
通知等待- 使用 inotify 等待文件更改
例子:
while inotifywait -e modify /var/log/my_log; do
if tail -n1 /var/log/my_log | grep error; then
write_email_to_support
fi
done
对于您的特定用例,您可以使用-m
(监视器)或-d
(守护进程,与监视器相同,但在后台运行)并将输出(-o
)到某些日志文件:
#!/bin/bash
inotifywait -e create,modify -m /var/lib/docker/volumes/shared/_data -o /var/log/shared_data_log
- 添加
-r
以inotfiywait
递归方式监视更改 - 您可以使用
--format ...
来指定输出格式。 - 这是不是无法查看谁创建或更改了文件。这是文件系统的限制。
查看man inotifywait
更多选项。