Linux inotify监听文件状态的操作方法

Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。

通俗来说,inotify可以监控文件的状态并且对变化的状态做出一些操作。

安装

yum install inotify-tools -y

  • inotifywait命令可以用来收集有关文件访问信息
  • inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。

基本用法

[root@250 nginx]# inotifywait -h
inotifywait 3.14
Usage: inotifywait [ 选项 ] file1 [ file2 ] [ file3 ] [ ... ]

选项:

@<file>       排除某些文件.
    --exclude <pattern>  排除匹配的文件
    --excludei <pattern> 大小写不敏感排除指定样式的文件
    -m|--monitor  保持监听状态,如果不设置这个选项,inotifywait只执行一次就会退出。
    -d|--daemon   类似于-m,但是在后台运行,输出事件到特定的文件可以通过 --outfile. 意味着 --syslog.
    -r|--recursive  递归监听目录
    -s|--syslog     发送错误日志到syslog而不是stderr
    -q|--quiet      静态模式,不输出信息
    -qq             什么都不输出
    --timefmt <fmt>  时间格式
    -e|--event <event1> [ -e|--event <event2> ... ]
        监听指定的事件,如果不指定,所有的事件都被监听。

Exit status:

0  -  收到了指定的事件
    1  -  收到了没有指定的事件,或者出现了一些错误
    2  -  没有收到事件

可以监听的事件:

access    访问,读取文件。
  modify    修改,文件内容被修改。
  attrib    属性,文件元数据被修改。
  move  移动,对文件进行移动操作。
  create    创建,生成新文件
  open  打开,对文件进行打开操作。
  close 关闭,对文件进行关闭操作。
  delete    删除,文件被删除。

案例

只有当nginx的配置文件写入完成的时候重启nginx

#!/bin/bash
inotifywait -m -e close_write -r /usr/local/openresty/nginx/conf/ |
while read events;
do
 echo $events;
 nginx -s reload;
 echo "Nginx reloaded!"
done

监听某个目录下的文件状态,输出事件

#!/bin/bash
#filename watchdir.sh
path=$1
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %[w](http://man.linuxde.net/w "w命令") %f' -e modify,delete,create,attrib $path

总结

介绍了inotify-tools的一些特性,与命令的使用。

inotify可以监控文件的状态并且对文件变化的状态做出一些自定义操作。

以上所述是小编给大家介绍的Linux inotify监听文件状态的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • Python中使用Inotify监控文件实例
  • 使用Inotify 监控目录与文件的方法详解
  • Linux 监控文件被什么进程修改(详解)
  • 一个监控LINUX目录和文件变化的Shell脚本分享
(0)

相关推荐

  • 一个监控LINUX目录和文件变化的Shell脚本分享

    最近看到群里有人聊到他们的服务器最近被挂马,然后想利用一个脚本能够实时监控web目录下文件的变化,也就是对该目录的增删改操作都会记录到相应日志下. 当时感觉这个功能的确实有点意思,所以网上查阅了些资料,自己研究了下,这会儿有空写了个脚本,分享给大家,如有问题,还请大家指出. 以下我写了两个脚本: 脚本1:将需要监控的目录的原始状态保存到LOG日志 脚本2:将脚本1的原始状态与本脚本比对,如果目录文件发生变化,则将变化的内容保存到日志. 注:原理实际上利用的是du -sb输出值来判断文件的变化,再

  • 使用Inotify 监控目录与文件的方法详解

    1. 监控路径并打印所有发生在该路径的事件. 代码如下: 复制代码 代码如下: #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/inotify.h>#include <unistd.h>#define EVENT_NUM 12char *event_str[EVENT_NUM] = { "IN_ACCESS", "IN_MOD

  • Linux 监控文件被什么进程修改(详解)

    安装: apt-get install auditd. 1.auditd 是后台守护进程,负责监控记录 2.auditctl 配置规则的工具 3.auditsearch 搜索查看 4.aureport 根据监控记录生成报表 比如,监控 /root/.ssh/authorized_keys 文件是否被修改过: aditctl -w /root/.ssh/authorized_keys -p war -k auth_key •-w 指明要监控的文件 •-p awrx 要监控的操作类型,append,

  • Python中使用Inotify监控文件实例

    Inotify地址:访问 # -*- coding:utf-8 -*- import os import pyinotify from functions import * WATCH_PATH = '' #监控目录 if not WATCH_PATH: wlog('Error',"The WATCH_PATH setting MUST be set.") sys.exit() else: if os.path.exists(WATCH_PATH): wlog('Watch statu

  • Linux inotify监听文件状态的操作方法

    Inotify 是一个 Linux特性,它监控文件系统操作,比如读取.写入和创建.Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多.学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具. 通俗来说,inotify可以监控文件的状态并且对变化的状态做出一些操作. 安装 yum install inotify-tools -y inotifywait命令可以用来收集有关文件访问信息 inotifywatch命令用于收集关于

  • Spring boot + LayIM + t-io 实现文件上传、 监听用户状态的实例代码

    前言 今天的主要内容是:LayIM消息中图片,文件的上传对接.用户状态的监听.群在线人数的监听.下面我将挨个介绍. 图片上传 关于Spring boot中的文件上传的博客很多,我也是摘抄了部分代码.上传部分简单介绍,主要介绍在开发过程中遇到的问题.首先我们看一下LayIM的相应的接口: layim.config({ //上传图片接口 ,uploadImage: {url: '/upload/file'} //上传文件接口 ,uploadFile: {url: '/upload/file'} //

  • Java实现监听文件变化的三种方案详解

    目录 背景 方案一:定时任务 + File#lastModified 方案二:WatchService 方案三:Apache Commons-IO 小结 背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载.当然,在其他业务场景下,比如想实现配置文件的动态加载.日志文件的监听.FTP文件变动监听等都会遇到类似的场景. 本文给大家提供三种解决方案,并分析其中的利弊,建议收藏,以备不时之需. 方案一:定时任务 + File#lastModi

  • Android 监听网络状态方法详解

    Android 监听网络状态方法详解 一.加入网络权限 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" /> 二.判断手机网络的几个方案 1)判断是否有网络连接 public boolean isMobileConnected(Context context) { if (context != nul

  • android 监听网络状态的变化及实战的示例代码

    平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 没有网络的错误 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到 打开 WiFi设置的界面等 非WiFi情况下是否加载图片,是否播放视频等 实现思路 在网络错误的情况下获取网络状态进行判断,这种方法是可行的,但你想过了没有,如果每次都要进行这样的判断,

  • Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: •对文件系统的访问提供了全面的支持 •提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Java只提供了File类来操作文件.文件夹本身,功能有限,性能也不高. NIO.2为解决这种缺陷,提供了Path接口,并提供了Paths.Files2个工具类,这2个工具类包含的方法都是静态方法,Files类提供了大量的静态方法来操作文件.文件夹. Path接口.Paths工具类使用示例: //获

  • node.js监听文件变化的实现方法

    前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了手动F5的情况.其实现就是监听文件变化自动调用构建过程.下面就关注下如何实现node监听文件变化. 场景 假定要监听index.js,每当内容更改重新编译. 我们就用简单的console来标识执行编译.下面就是实现该功能. node原生API fs.watchFile 翻下node的文档就会看到一个

  • linux中批量添加文件前缀的操作方法

    需要在文件夹内所有txt文件的文件名前面添加"gt_"; 就是由原来的文件"xxx.txt"变成"gt_xxx.txt": 网上搜来的脚本如下: for i in `ls`; do mv -f $i 'echo "gt_"$i`; done 1.首先, linux命令行切换到你需要修改文件名的目录之下: cd 目的目录 2.在该目录下新建sh文件: touch xxx.sh 3.打开xxx.sh文件: vim xxx.sh 3

  • Java利用WatchService监听文件变化示例

    在实现配置中心的多种方案中,有基于JDK7+的WatchService方法,其在单机应用中还是挺有实践的意义的. 代码如下: package com.longge.mytest; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardWatchEventKind

  • iOS CoreTelephony 实现监听通话状态

    在程序中如果需要监听电话状态,可以引入CoreTelephony框架,这个框架包含了电话相关的API,可以实现监测来电,查看运营商信息等功能.下面就是具体的实现监测来电的代码.一定要把center写成一个单独的属性,并且是强引用(strong),否则如果在viewDidLoad方法里创建center,viewDidLoad方法调用完后center就销毁了,就无法检测到来电了. 一个通话最初的状态为呼入(CTCallStateIncoming)和呼出(CTCallStateDialing),当接通

随机推荐