Linux - 借助 inotifywait,轻松实现 Linux 文件/目录事件监听

文章目录

  • inotify-tools 依赖包
  • 使用
  • 示例

在这里插入图片描述


inotify-tools 依赖包


[root@VM-24-3-centos ~]# yum install inotify-tools
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Determining fastest mirrors
......
......
......
Resolving Dependencies
--> Running transaction check
---> Package inotify-tools.x86_64 0:3.14-9.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=======================================================================================================================================Package                             Arch                         Version                             Repository                  Size
=======================================================================================================================================
Installing:inotify-tools                       x86_64                       3.14-9.el7                          epel                        51 kTransaction Summary
=======================================================================================================================================
Install  1 PackageTotal download size: 51 k
Installed size: 111 k
Is this ok [y/d/N]: y
Downloading packages:
inotify-tools-3.14-9.el7.x86_64.rpm                                                                             |  51 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : inotify-tools-3.14-9.el7.x86_64                                                                                     1/1Verifying  : inotify-tools-3.14-9.el7.x86_64                                                                                     1/1Installed:inotify-tools.x86_64 0:3.14-9.el7Complete!
[root@VM-24-3-centos ~]#

使用


[root@VM-24-3-centos ~]# inotifywait  --help
inotifywait 3.14
Wait for a particular event on a file or set of files.
Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
Options:-h|--help       Show this help text.@<file>         Exclude the specified file from being watched.--exclude <pattern>Exclude all events on files matching theextended regular expression <pattern>.--excludei <pattern>Like --exclude but case insensitive.-m|--monitor    Keep listening for events forever.  Withoutthis option, inotifywait will exit after oneevent is received.-d|--daemon     Same as --monitor, except run in the backgroundlogging events to a file specified by --outfile.Implies --syslog.-r|--recursive  Watch directories recursively.--fromfile <file>Read files to watch from <file> or `-' for stdin.-o|--outfile <file>Print events to <file> rather than stdout.-s|--syslog     Send errors to syslog rather than stderr.-q|--quiet      Print less (only print events).-qq             Print nothing (not even events).--format <fmt>  Print using a specified printf-like formatstring; read the man page for more details.--timefmt <fmt> strftime-compatible format string for use with%T in --format string.-c|--csv        Print events in CSV format.-t|--timeout <seconds>When listening for a single event, time out afterwaiting for an event for <seconds> seconds.If <seconds> is 0, inotifywait will never time out.-e|--event <event1> [ -e|--event <event2> ... ]Listen for specific event(s).  If omitted, all events arelistened for.Exit status:0  -  An event you asked to watch for was received.1  -  An event you did not ask to watch for was received(usually delete_self or unmount), or some error occurred.2  -  The --timeout option was given and no events occurredin the specified interval of time.Events:access          file or directory contents were readmodify          file or directory contents were writtenattrib          file or directory attributes changedclose_write     file or directory closed, after being opened inwriteable modeclose_nowrite   file or directory closed, after being opened inread-only modeclose           file or directory closed, regardless of read/write modeopen            file or directory openedmoved_to        file or directory moved to watched directorymoved_from      file or directory moved from watched directorymove            file or directory moved to or from watched directorycreate          file or directory created within watched directorydelete          file or directory deleted within watched directorydelete_self     file or directory was deletedunmount         file system containing file or directory unmounted
[root@VM-24-3-centos ~]#

常用选项包括:

  • -m​:以持续监视模式运行,即持续监视文件并输出事件。
  • ​-r​:递归监视指定目录及其子目录中的文件。
  • ​-e <event>​:指定要监视的特定事件类型。可以使用多个 -e​ 选项来指定多个事件类型。
  • ​-q​:静默模式,只输出事件信息。
  • ​-s <seconds>​:设置事件之间的最小时间间隔。

使用 inotifywait 命令时,它会持续监视指定的文件或目录,并在事件发生时输出相关信息。可以根据需要处理输出,例如执行其他命令或触发脚本。


示例

监视单个文件的事件:


[root@VM-24-3-centos ~]# inotifywait -e modify -e create a1.txt
Setting up watches.
Watches established.

以上命令将监视 myfile.txt​ 文件的修改和创建事件。

监视单个目录的事件:


[root@VM-24-3-centos ~]# inotifywait -e modify -e create /root
Setting up watches.
Watches established.

以上命令将监视 mydir/​ 目录中文件的修改和创建事件。

监视多个文件或目录的事件:


[root@VM-24-3-centos ~]# touch a1.txt
[root@VM-24-3-centos ~]# touch a2.txt
[root@VM-24-3-centos ~]# inotifywait -e modify -e create a1.txt a2.txt /root
Setting up watches.
Watches established.
^C

以上命令将同时监视 a1.txt​、a2.txt​ 和 mydir/​ 中的文件的修改和创建事件。

如果监视的是目录,则 inotifywait 命令也会观察该目录中的子目录。可以使用 -r​ 选项来递归地监视目录及其子目录中的文件。


#!/bin/bash
# 指定监控目录
directory="/root"
# 监控目录下的文件变更
while inotifywait -r -m  -e create,modify  $directory; do# 处理文件变更事件echo "File event: $?"inotifywait -r  -e create,modify  $directory | while read line; do# 输出事件详细信息echo "$line"done
done

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/81037.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

市面上那里有稳定L2股票行情数据接口?

随着市场的发展和技术的进步&#xff0c;level2股票行情数据接口已经成为股票交易软件的标准配置之一。虽然这些券商软件的功能在很大程度上相似&#xff0c;但它们仍然有自己的特点和优势。 例如&#xff1a;通过股票交易所以其专业的研究报告和丰富的信息服务而受到广泛关注&…

uniapp - 全平台兼容实现上传图片带进度条功能,用户上传图像到服务器时显示上传进度条效果功能(一键复制源码,开箱即用)

效果图 uniapp小程序/h5网页/app实现上传图片并监听上传进度,显示进度条完整功能示例代码 一键复制,改下样式即可。 全部代码 记得改下样式,或直接

实验篇——家族成员染色体位置分析

实验篇——家族成员染色体位置分析 文章目录 前言一、名词解释二、实操1. 获取存储基因ID的文件2. 获取基因密度文件3. 获取染色体文件4. 执行 总结 前言 在基因家族分析中&#xff0c;通过观察基因家族成员在染色体上的位置。可以判断在染色体上是否成簇分布。 一、名词解释 …

【Python原创毕设|课设】基于Python Flask的上海美食信息与可视化宣传网站项目-文末附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

stm32之5.长按按键(使用时钟源)调整跑马灯速度

------------------------------ 源码 #include <stm32f4xx.h> #include "led.h" #include "delay.h" #include "my_str.h" #include "beep.h" #include "key.h" int main(void) { key_init(); Led_init();…

完美解决微信小程序使用复选框van-checkbox无法选中

由于小程序使用了vant-ui框架&#xff0c;导致checkbox点击无法选中问题 <van-checkbox value"{{ checked }}" shape"square"><view class"check-content"><view class"checktext">我已阅读并同意>《用户协议》…

使用StorageClass动态创建pv

rook-ceph安装部署到位后&#xff0c;就可以开始来尝试使用StorageClass来动态创建pv了。 有状态的中间件在kubernetes上落地基本上都会用到StorageClass来动态创建pv&#xff08;对于云上应用没有那么多烦恼&#xff0c;云硬盘很好用&#xff0c;但是对于自己学习和练习来说还…

kubernetes--技术文档-真--集群搭建-三台服务器一主二从(非高可用)-三服务器位于同交换机中

在使用k8s之前如果不太熟悉k8s的可以先看这个文章&#xff1a; kubernetes--技术文档--基本概念--《10分钟快速了解》_一单成的博客-CSDN博客 三节点相同安装操作&#xff1a; 1、设置hosts解析 根据角色在三个服务器中运行&#xff0c;设置自己的hostname。 标识&#xf…

Linux:编写编译脚本Makefile文件

一、生成可执行文件 1、一个源文件编译 本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。 1).c文件 // testadd.c #include <stdio.h> int main() {int a 1;int b 2;int sum a b;printf("sum %d\n", sum);return 0; }// Makefie GXX g CC gcc…

无涯教程-PHP - XML GET

XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件&#xff0c;可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…

Android开发之性能优化:过渡绘制解决方案

1. 过渡绘制 屏幕上某一像素点在一帧中被重复绘制多次&#xff0c;就是过渡绘制。 下图中多个卡片跌在一起&#xff0c;但是只有第一个卡片是完全可见的。背后的卡片只有部分可见。但是Android系统在绘制时会将下层的卡片进行绘制&#xff0c;接着再将上层的卡片进行绘制。但其…

线上问诊:业务数据采集

系列文章目录 线上问诊&#xff1a;业务数据采集 文章目录 系列文章目录前言一、环境准备1.Hadoop2.Zookeeper3.Kafka4.Flume5.Mysql6.Maxwell 二、业务数据采集1.数据模拟2.采集通道 总结 前言 暑假躺了两个月&#xff0c;也没咋写博客&#xff0c;准备在开学前再做个项目找…