Linux文件实时监控工具inotify-tools的安装和使用
inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改、新增、删除等,并可以将相应的事件通知给应用程序。
inotify 支持检测
只有在内核 2.6.13 (June 18, 2005) 以上的 Linux 版本中才支持 inotify-tools。
可以用以下3种方法中的任何一种看你的系统是否支持inotify-tools
[root@WIND ~]# uname -a
Linux WIND 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@WIND ~]#
[root@WIND ~]# cat /proc/version
Linux version 4.18.0-193.28.1.el8_2.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)) #1 SMP Thu Oct 22 00:20:22 UTC 2020
[root@WIND ~]#
[root@WIND ~]# ls /proc/sys/fs/inotify/
max_queued_events max_user_instances max_user_watches
通过/proc接口中的如下参数设定inotify能够使用的内存大小:
1、/proc/sys/fs/inotify/max_queue_events
应用程序调用inotify时需要初始化inotify实例,并时会为其设定一个事件队列,此文件中的值则是用于设定此队列长度的上限;超出此上限的事件将会被丢弃;
2、/proc/sys/fs/inotify/max_user_instances
此文件中的数值用于设定每个用户ID(以ID标识的用户)可以创建的inotify实例数目的上限;
3、/proc/sys/fs/inotify/max_user_watches
此文件中的数值用于设定每个用户ID可以监控的文件或目录数目上限;
顺便查一下我们的系统这几个默认参数的值
[root@WIND ~]# cat /proc/sys/fs/inotify/max_user_watches
8192
[root@WIND ~]# cat /proc/sys/fs/inotify/max_user_instances
128
[root@WIND ~]# cat /proc/sys/fs/inotify/max_queued_events
16384
[root@WIND ~]#
这些参数的值,我们可以进行优化,比如,调大max_user_watches的值
echo 1048204800 > /proc/sys/fs/inotify/max_user_watches
inotify-tools是一套组件,它包括一个C库和几个命令行工具,这些命令行工具可用于通过命令行或脚本对某文件系统的事件进行监控。
inotify-tools提供的两个命令行工具:
1) inotifywait:通过inotify API等待被监控文件上的相应事件并返回监控结果,默认情况下,正常的结果返回至标准输出,诊断类的信息则返回至标准错误输出。它可以在监控到对应监控对象上指定的事件后退出,也可以进行持续性的监控。
2)inotifywatch:通过inotify API收集被监控文件或目录的相关事件并输出统计信息。
安装
直接yum -y intall安装
[root@WIND ~]# yum -y install inotify-tools
Last metadata expiration check: 2:19:59 ago on Tue 29 Mar 2022 02:41:41 PM CST.
Dependencies resolved.
==================================================================