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

这篇具有很好参考价值的文章主要介绍了Linux - 借助 inotifywait,轻松实现 Linux 文件/目录事件监听。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


Linux - 借助 inotifywait,轻松实现 Linux 文件/目录事件监听,【系统运维-Shell】,linux,运维

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 Resolution

Dependencies Resolved

=======================================================================================================================================
 Package                             Arch                         Version                             Repository                  Size
=======================================================================================================================================
Installing:
 inotify-tools                       x86_64                       3.14-9.el7                          epel                        51 k

Transaction Summary
=======================================================================================================================================
Install  1 Package

Total 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 transaction
  Installing : inotify-tools-3.14-9.el7.x86_64                                                                                     1/1
  Verifying  : inotify-tools-3.14-9.el7.x86_64                                                                                     1/1

Installed:
  inotify-tools.x86_64 0:3.14-9.el7

Complete!
[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 the
                        extended regular expression <pattern>.
        --excludei <pattern>
                        Like --exclude but case insensitive.
        -m|--monitor    Keep listening for events forever.  Without
                        this option, inotifywait will exit after one
                        event is received.
        -d|--daemon     Same as --monitor, except run in the background
                        logging 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 format
                        string; 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 after
                        waiting 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 are
                listened 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 occurred
              in the specified interval of time.

Events:
        access          file or directory contents were read
        modify          file or directory contents were written
        attrib          file or directory attributes changed
        close_write     file or directory closed, after being opened in
                        writeable mode
        close_nowrite   file or directory closed, after being opened in
                        read-only mode
        close           file or directory closed, regardless of read/write mode
        open            file or directory opened
        moved_to        file or directory moved to watched directory
        moved_from      file or directory moved from watched directory
        move            file or directory moved to or from watched directory
        create          file or directory created within watched directory
        delete          file or directory deleted within watched directory
        delete_self     file or directory was deleted
        unmount         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

Linux - 借助 inotifywait,轻松实现 Linux 文件/目录事件监听,【系统运维-Shell】,linux,运维文章来源地址https://www.toymoban.com/news/detail-655145.html

到了这里,关于Linux - 借助 inotifywait,轻松实现 Linux 文件/目录事件监听的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小杨裸辞5个月后,借助着AI写作工具轻松达到月入1万了

    AI写作相信很多人都有所了解,但到底能够对人们的工作有什么帮助呢?欢鹰智能AI写作机器人从开发至今已经有一年多了,正式运营也已经有几个月的时间。 小沫记得在刚开始有一个会员是一位可爱的姑娘叫小杨,当时她是辞职了一段时间,在家里很焦虑,工作也没找到合适的。每

    2024年02月13日
    浏览(33)
  • 如何借助Kafka持久化存储K8S事件数据?

    大家应该对 Kubernetes Events 并不陌生,特别是当你使用 kubectl describe 命令或 Event API 资源来了解集群中的故障时。     尽管这些信息十分有用,但它只是临时的,保留时间最长为30天。如果出于审计或是故障诊断等目的,你可能想要把这些信息保留得更久,比如保存在像 Kafka

    2024年02月05日
    浏览(46)
  • 【Linux】Linux文件目录结构

    在 Linux 中,其文件目录结构是一颗类似于多叉树的结构,所有目录都在 / (根目录)下面,每个非叶节点代表一个目录,叶节点代表文件。 一般结构如下所示: usr :“Unix Software Resource” 的缩写,该目录包含用户使用的应用程序和文件,而不是系统使用的应用程序和文件,例

    2024年02月06日
    浏览(47)
  • Linux查看目录下的文件及根目录文件的解释

    在Linux操作系统当中,文件名不区分后缀,但经常使用后缀来帮助用户区分文件。 语法结构:ls 路径 列出指定目录下的内容,该命令在没有指定要列出哪个选项和参数的时候,默认为列出当前目录下的内容,一本都有默认的(注:默认的情况下不区分文件和目录,注意,在

    2024年02月09日
    浏览(63)
  • linux查看当前目录及子目录所有文件

    1.查看当前目录及子目录所有文件: du -ah 执行结果如下: 2.查看当前目录及子目录所有文件,并根据大小排序: du -a | sort -n 执行结果如下:(单位:字节) 整理完毕,完结撒花~

    2024年02月16日
    浏览(34)
  • Linux文件、目录相关命令

            查看文件、目录属性:ls、stat、file         查看内容:cat、tac(从后往前)、more、less、tail、head                 cat [OPTION] ...[FILE]...                         -E:显示行结束符$                         -n:对显示的每一行进行编号

    2024年02月15日
    浏览(49)
  • Linux 文件 & 目录管理 & 链接

                 Linux 系统是一种典型的多用户系统,为了保护系统的安全性,不同的用户拥有不同的地位和权限。Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。              可以使用命令:ll 或 ls –l 来显示一个文件的属性以及文件所属

    2024年02月07日
    浏览(38)
  • Linux--文件/目录权限

    拥有者:文件属于谁 所属组:文件属于哪个组 other:不属于上面两种的任何一个,就是other 图示:  分析: ①第一列: d:目录 -:普通文件 p:管道文件 b:块设备 c:字符设备 l:链接文件 ... ②每一组 r:读权限 w:写权限 x:可执行权限 -:表示不存在该权限 语法: 常用选项: R - 递归修

    2024年02月12日
    浏览(48)
  • Linux 文件与目录管理

    我们知道 Linux 的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 在开始本教程前我们需要先知道什么是绝对路径与相对路径。 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录

    2024年02月13日
    浏览(37)
  • Linux文件目录结构

    使用 Linux 时,通过命令行输入 ls -l / 可以看到,在 Linux 根目录(/)下包含很多的子目录(称为一级目录),例如 bin、boot、dev 等。同时,各一级目录下还含有很多子目录(称为二级目录),比如 /bin/bash、/bin/ed 等。Linux 文件系统目录总体呈现树形结构,/ 根目录就

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包