linux inotify 文件变化检测

用webstorm开发angular项目的时候,改写文件后发现热更新有时候会失效,从而不得不重新运行下项目,然而这浪费了好多时间,google一番后,解决办法如下

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

经此命令敲入终端运行,最好重启下ide.

技术详情:

在linux中默认使用inotify来监视目录文件的变化.如果需要监视的目录文件过大,超过linux的默认值,监视就会失效.比如Ubuntu 10.04 LTS Lucid Lynx 的inotify限制为8192.

查看当前系统inotify的限制大小:

cat /proc/sys/fs/inotify/max_user_watches

 

转载于:https://www.cnblogs.com/hanshuai/p/8848403.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
inotify是一个Linux内核提供的文件系统事件通知机制,可以用来监视文件系统中的文件或目录,并在这些文件或目录发生变化时发出相应的通知。inotify支持多种事件类型,包括文件创建、文件删除、文件修改、文件移动、目录创建、目录删除等等。 要监测文件删除事件,可以使用inotify的IN_DELETE事件类型。当一个被监测的文件或目录被删除时,inotify会发送一个事件通知给应用程序,应用程序可以通过读取inotify文件描述符中的事件来获取这个通知。 以下是一个使用inotify监测文件删除事件的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/inotify.h> #define EVENT_SIZE (sizeof(struct inotify_event)) #define BUF_LEN (1024 * (EVENT_SIZE + 16)) int main(int argc, char **argv) { int fd, wd; char buf[BUF_LEN]; ssize_t len; struct inotify_event *event; if(argc < 2) { fprintf(stderr, "Usage: %s <file>\n", argv[0]); exit(EXIT_FAILURE); } fd = inotify_init(); if(fd == -1) { perror("inotify_init"); exit(EXIT_FAILURE); } wd = inotify_add_watch(fd, argv[1], IN_DELETE); if(wd == -1) { perror("inotify_add_watch"); exit(EXIT_FAILURE); } while(1) { len = read(fd, buf, BUF_LEN); if(len == -1 && errno != EAGAIN) { perror("read"); exit(EXIT_FAILURE); } for(char *p = buf; p < buf + len;) { event = (struct inotify_event *)p; printf("File %s was deleted.\n", event->name); p += EVENT_SIZE + event->len; } } exit(EXIT_SUCCESS); } ``` 这个程序会监测一个指定的文件,当这个文件被删除时,就会输出一条消息。程序首先调用inotify_init函数创建一个inotify实例,然后使用inotify_add_watch函数添加一个监测项,指定监测文件的路径和监测事件类型。程序进入一个循环,不断读取inotify文件描述符中的事件,如果有事件发生,就输出相应的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值