首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在终端中监控文件并打印出更改(使用inotify)?

在终端中监控文件并打印出更改可以使用inotify工具。inotify是Linux内核提供的一种文件系统事件通知机制,可以监控文件或目录的变化,并在事件发生时通知相应的应用程序。

使用inotify进行文件监控的步骤如下:

  1. 导入inotify相关的头文件:
代码语言:txt
复制
#include <sys/inotify.h>
  1. 创建inotify实例:
代码语言:txt
复制
int fd = inotify_init();
if (fd == -1) {
    perror("inotify_init");
    exit(EXIT_FAILURE);
}
  1. 添加监控:
代码语言:txt
复制
int wd = inotify_add_watch(fd, "/path/to/file", IN_MODIFY);
if (wd == -1) {
    perror("inotify_add_watch");
    exit(EXIT_FAILURE);
}

其中,/path/to/file是要监控的文件路径,IN_MODIFY表示监控文件的修改事件。

  1. 读取事件:
代码语言:txt
复制
char buf[4096] __attribute__ ((aligned(__alignof__(struct inotify_event))));
ssize_t len = read(fd, buf, sizeof(buf));
if (len == -1) {
    perror("read");
    exit(EXIT_FAILURE);
}

struct inotify_event *event;
for (char *ptr = buf; ptr < buf + len; ptr += sizeof(struct inotify_event) + event->len) {
    event = (struct inotify_event *)ptr;
    if (event->mask & IN_MODIFY) {
        printf("File modified: %s\n", event->name);
    }
}

通过调用read函数读取inotify实例的事件,然后遍历事件列表,判断事件类型,这里使用IN_MODIFY来判断文件是否被修改。

在腾讯云中,可以使用云服务器来运行这样的监控程序。腾讯云的云服务器提供了稳定可靠的计算资源,可以满足各种应用场景的需求。您可以通过腾讯云控制台或API创建和管理云服务器实例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Pyinotify – Linux实时监控文件系统更改

Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改。用于在Linux实时监控文件系统的变化。...作为系统管理员,您可以使用它来监视目标感兴趣的更改Web目录或应用程序数据存储目录及其他目录。...在本文中,我们将向您展示如何在Linux安装和使用pyinotify来实时监控文件系统更改或修改。...在大多数Linux发行版,如果您使用从python.org下载的Python 2> = 2.7.9或Python 3> = 3.4二进制文件, Pip已经安装,否则安装如下: # apt-get install...Linux中使用pyinotify 在下面的示例,我以root用户(通过ssh登录)监视用户 jchen 的home( / home/jchen )目录的任何更改屏幕截图所示: # python

3.2K20

配置 inotify+rsync 实时同步

Linux内核提供了inotify通知接口,用来监控文件系统的各种变化情况,文件存取、删除、移动、修改等。...利用这个机制,可以非常方便地实现文件异动告警、增量备份,针对目录或文件的变化及时作出响应。...8192 #每个实例最多监控文件数 当要监控的目录、文件数量较多或者变化比较频繁时,建议通过修改“ /etc/sysctl.conf ”加大这三个参数(标准是1024...; -q:简化输出信息; modify:修改; create:创建; move:移动; delete:删除; attrib:属性更改; 现在切换一个终端,在监控的目录下新建一个1.html文件,则该终端监控命令下就会提示相关信息...切换到本机的/var/www/html/目录,执行增加、删除、修改文件等操作。 查看server A服务器/var/www/html/目录下的变化情况。

1K30
  • 使用 inotify 和 rsync 实现文件实时同步

    异步的文件系统事件监控机制,linux内核从2.6.13起,加入了 Inotify支持,通过Inotify可以监控文件系统添加、删除,修改、移动等各种事件。...利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而 inotify-tools 正是实施这样监控的软件。...inotifywatch 收集被监控文件系统使用的统计数据,指文件系统事件发生的次数统计。 在实时同步的时候,主要是利用 inotifywait 对目录进行监控。...1.3 inotifywait 的常用参数-m 是要持续监视变化-r 使用递归形式监视目录-q 减少冗余信息,只打印出需要的信息-e 指定要监视的事件列表--timefmt 是指定时间的输出格式--format...move 文件或目录不管移动到或是移出监控目录都触发事件create 文件或目录创建在监控目录delete 文件或目录被删除在监控目录1.4 inotifywait 使用比如监听 文件的创建# 一个终端开始监听

    1.5K30

    rsync自动同步_文件实时同步

    (backuper) 4.4 在另一个终端编写触发式同步脚本(backuper) 4.5 验证 六、使用 rsync 实现快速删除大量文件 1....发起端配置 rsync + inotify   使用 inotiify 通知接口,可以用来监控文件系统的各种变化情况,文件存取、删除、移动、修改等。...因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份应用时更适合上行同步。...inotifywait:可监控modify(修改)、create(创建)、move(移动)、delete(删除)、attrib(属性更改)等各种事件,一旦变动立即输出结果。...,保持所有文件属性 -H:保持硬链接文件 -v:详细输出模式 --progress:在传输室显示传输过程 --stats:给出某些文件的传输状态 ---- 参考 rsync + inotify https

    4.2K31

    19 张图详解 Rsync 远程同步

    在 rsync 命令,如果使用单个冒号(:),则默认使用 ssh 协议;反之,如果使用两个冒号(::),则使用 rsync 协议。...机制 从版本 2.6.13 开始提供 可以监控文件系统的变动情况,做出通知响应 辅助软件:inotify-tools 4.4 发起端配置 rsync+Inotify 使用 inotify 通知接口,...可以用来监控文件系统的各种变化情况,文件存取、删除、移动、修改等。...因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份应用时更适合上行同步。...inotifywait:可监控 modify (修改)、create (创建)、move (移动)、delete (删除)、attrib ( 属性更改)等各种事件,一有变动立即输出结果。

    3.1K20

    文件监控-inotify安装与使用分享

    开篇:在Linux环境开发过程,遇到需要监控某个目录的文件是否发生变化执行相应脚本,网上了解一下,inotify完美符合需求。...这些程序可以用于监视文件系统事件执行相应操作,这些程序是用C语言来写的,除了需要Linux内核的inotify支持外,没有其他的依赖,使用方便。...inotify 在Linux内核 2.6.13 (June 18, 2005)版本引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,针对事件集监控一个或者多个文件...三、inotify-tools 工具包包含了两个命令: inotifywait ======>>>> inotifywait 仅执行阻塞,等待 inotify 事件,你可以使用它来监控任何一组文件和目录...在实际使用的过程,可以使用-d --outfile 两个选项,在后台运行并且输出到某个文件,shell监控日志文件变更从而达到监控某目录下所有文件变更的目的。

    5K50

    配置rsync+inotify实现站点文件实时同步

    ,为了在周期性计划任务不用输入密码交互式执行, 需要创建一个密码文件,保存用户的密码,/etc/server.pass,在执行rsync同步时使用选项 --password-file=/etc/server.pass...实时同步 notify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13版本起,加入了对inotify的支持。...通过inotify可以监控文件系统添加、删除、修改、移动等各种事件,利用这个内核接口,inotify-tools便可以监控文件系统下文件的各种变化情况了。...16384    //监控事件队列数 fs.inotify.max_user_instances = 1024    //最多监控实例数 fs.inotify.max_user_watches = 1048576...chmod +x /opt/ino.sh 4.4、源服务器端测试 执行脚本后,当前终端会变成实时监控界面,需要重新打开终端操作。

    74010

    基于rsync+inotify实现数据实时同步传输

    -e ssh: 使用ssh作为传输承载;-z: 压缩后传输;--progress: 显示进度条--stats: 显示如何执行压缩和传输 注意:rsync命令,如果源路径是目录,且给复制路径时末尾有.../,则会复制目录的内容,而非目录本身;如果末尾没有/,则会同步目录本身及目录的所有文件;目标路径末尾是否有/无关紧要;:rsync -r /var/log/ /tmp #复制/var/log目录下的所有文件...,而且rsync虽然可以通过crontab实现定期同步,但是也达不到实时同步的要求,要想解决这一弊端,就需要inotify了 数据实时同步实现 inotify相关介绍 可用于定义监控指定的目录下的所有文件...rsync.passwd $SRC scholar@$HOST::$DESTdone#inotifywait参数详解:#-m,表示始终保持事件监听状态#-r,表示递归查询目录#-q,表示打印出监控事件...,相应的主服务器inotify的脚本也需要略加修改,过程并不麻烦,实验过程遇到问题可留言。

    1.4K40

    linux inotify-tools 安装

    安装完成后,会生成inotifywait和inotifywatch两个指令,其中,inotifywait用于等待文件文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。...inotifywatch用于收集被监控文件系统统计数据,包括每个inotify事件发生多少次等信息。.../proc/sys/fs/inotify/max_queued_evnets 表示调用inotify_init时分配给inotify instance可排队的event的数目的最大值,超出这个值的事件被丢弃...Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面介绍一下常用的一些参数:  -m, 即--monitor,表示始终保持事件监听状态。... -q, 即--quiet,表示打印出监控事件。  -e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。

    2.6K40

    再说rsync+inotify实现数据的实时备份

    inotify介绍 Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统添加、删除,修改、移动等各种细微事件...,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。...inotifywatch用于收集被监控文件系统统计数据,包括每个inotify事件发生多少次等信息。...Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面介绍一下常用的一些参数: •-m, 即–monitor,表示始终保持事件监听状态。...•-q, 即–quiet,表示打印出监控事件。 •-e, 即–event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。

    48140

    CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步

    内核从 2.6.13 起,加入了 inotify 支持,通过 inotify 可以监控文件系统添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而...,对应的,备份服务器通过监控也会及时的进行同步更新,多台备份服务器 三、配置操作 在此提醒一下,本人在测试过程使用的是 root 账户,当然,如果使用的是其他账户,只要保证有足够的权限也可,谢谢 …...创建 rsync 复制脚本 此项功能主要是将 client 端的目录 /server/ftpInotify/ 里的内容,如果修改了(无论是添加、修改、删除文件)能够通过 inotify 监控到,通过...RE文件,并进行了保存,此时,其所在的终端会自动打印如下信息: ?...Linux中使用rsync——文件和目录排除列表 (2).

    2.2K10

    文件同步rsync

    --port= --delete删除源文件没有的数据 --password-file=FILE 从file得到密码 --bwlimit=KBPS 限制 --filter '' 需要过滤的文件...监控文件的变化 rsync + inotify linux内核从2.6.13版本开始开始提供inotify通知接口,用来监控文件系统的各种变化情况,文件存取,删除,移动等。...利用这一机制,可以非常方便的实现文件异动告警,增量备份,针对目录或文件的变化及时作出响应。...delete删除,motify修 改文件内容,attrib属性更改。 -m 表示持续监控 -r 表示递归整个目录 -q 表示简化输出信息。...inotifywait -mrq -e create,move,delete,motify /var/www inotify -rmq 文件目录 使用inotify输出监控结果,每行记录依次包括目录

    3.7K90

    inotify-tools工具安装配置

    Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。。...,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核启用了inotify。...inotifywatch命令用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次 inotifywait命令参数: -m是要持续监视变化。 -r使用递归形式监视目录。...-q减少冗余信息,只打印出需要的信息。 -e指定要监视的事件列表。 --timefmt是指定时间的输出格式。...close关闭,对文件进行关闭操作 delete删除,文件被删除 四、使用示例 监听/tmp目录内所有文件和目录的"增删改"操作/usr/bin/inotifywait -mrq -e 'create

    1K10

    inotify+rsync数据的实时同步

    监控软件inotify介绍 inotify可以监控同步数据服务器目录中信息的变化,采用异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13...起支持 inotify,通过inotify可以监控文件系统添加、删除,修改、移动等各种事件。...可以通过以下命令查看在内核文件该模块: # grep -i inotify /boot/config-3.10.0-1062.9.1.el7.x86_64 CONFIG_INOTIFY_USER=y...文件系统取消挂载 常用组合 持续后台监控记录日志 inotifywait -mrq /data/www -o /root/inotify.log --timefmt “%Y-%m-%d %H:...H:%M" --format "%T %w%f event: %;e" -e create,delete,moved_to,close_write,attrib inotifywatch命令: 收集被监控文件系统使用的统计数据

    46920

    rsync+inotify实现分布式集群部署

    上一篇:Linux下使用ssh密钥实现无交互备份 上二篇:Linux下使用rsync实现文件备份 缘起 由于公司要对支付做压测,于是使用了公司的服务器搭建了一个简单的集群环境,但是各个节点分别部署确实有点麻烦...如果监控文件数目巨大,需要根据情况,适当增加此值的大小。...例如: echo 30000000 > /proc/sys/fs/inotify/max_user_watches 2)下载inotify源码包编译安装 inotify是一种强大的、细粒度的、异步的文件系统事件控制机制...linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools...& #后台运行,你关掉终端也会继续运行 6)测试 主节点创建一个文件 touch test.html 查看各个自己节点是否有更新。

    1.3K50

    Linux下rsync+inotfysersync实现数据实时同步

    (三)使用非系统用户备份数据 使用非系统用户进入备份数据,依靠系统的 rsync 配置文件 /etc/rsyncd.conf 进行备份数据,创建备份账户,最终把 rsync 以 deamon 方式运行...# vim /etc/rsync.passwd #创建编写密码文件。...xy1 的伪终端,对 xy1 的 /var/www/html/ 目录进行操作 查看监听xy1的第一个伪终端pts1,发现报告CREATE,ISDIR dir1,证明inotify起作用了!...3.同步过程: (1)在同步服务器上开启sersync服务,sersync负责监控配置路径文件系统事件变化。 (2)调用rsync命令把更新的文件同步到目标服务器。...(1)更改优化sersync配置文件: [root@xy1 sersync]# vim confxml.xml #修改配置文件的24–28行,如下所示。

    1.2K30

    浅析gowatch监听文件变动实现原理

    通过阅读源码我们发现,在linux内核,有一种用于通知用户空间程序文件系统变化的机制—Inotify。它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。...如下图: 根据上图可知,监听文件的变化主要依赖于linux内核的INotify接口机制。Go的标准库对其做了实现。...接口简介 inotify主要涉及3个接口。...IN_CLOSE_WRITE 可写文件被 close IN_OPEN 文件被 open IN_MOVED_TO 文件被移来, mv、cp IN_CREATE 创建新文件 IN_DELETE 文件被删除..., rm IN_DELETE_SELF 自删除,即一个可执行文件在执行时删除自己 IN_MOVE_SELF 自移动,即一个可执行文件在执行时移动自己 IN_ATTRIB 文件属性被修改, chmod

    1.4K30
    领券