标签: inotify

inotify和epoll之间的区别

我想知道i/o观察者inotifyepoll之间的区别是什么?

inotify的

  • inotify_init(void)创建inotify实例以从中读取事件
  • inotify_add_watch(int fd,const char*path,int mask)返回路径后面的文件节点周围的手表fd
  • inotify_rm_watch(int fd,int wd)停止观看fd上的事件

epoll的

  • epoll_create(void)创建epoll对象
  • epoll_ctl(int epfd,int op,int fd,struct epoll_event*event)设置要监视的事件
  • epoll_wait(int epfd,struct epoll_event*events,int maxevents,int timeout); 阻止事件发生

所以在文件观看方面似乎有不同的方法.Inotify尝试让用户决定何时收集事件,而epoll会阻止事件发生.

它是否正确?还有什么其他差异?

博多

c c++ linux epoll inotify

23
推荐指数
1
解决办法
4772
查看次数

监视linux中文件系统更改的最佳方法

我正在寻找构建一个监视文件系统活动的文件系统同步实用程序,但似乎linux内核中的某些文件系统监视功能已过时或功能不全.

我的研究发现了什么

dnotify首先发布通知具有通知删除,修改,访问,属性,创建,移动等功能可以确定文件描述符,但现在已经过时了inotify和fanotify

inotify排在第二位,通知具有通知访问,修改,属性,关闭,移动,删除,创建等功能但是它不会给你一个文件描述符或进程,并且会被fanotify过时

fanotify是最新的通知访问,修改,关闭,但不通知删除或属性,但确实提供文件描述符

我需要一种方法来确定流程(例如来自fd)以及删除,修改,属性等等,以便同步所有内容,任何建议?不幸的是,dnotify似乎是最好的但是最过时的

linux filesystems inotify

21
推荐指数
1
解决办法
3万
查看次数

如何为Linux的新`fanotify`文件系统监控功能编程?

fanotify建在上面fsnotify,应该取代inotify被替换的dnotify.是否有一些好的编程示例或现有实用程序fanotify用于监视文件系统中的更改?fanotify提供了多少细节?

linux inotify fanotify

17
推荐指数
3
解决办法
2万
查看次数

是否有基于类似inotify的机制的构建工具

在使用普通旧项目的相对较大的项目中make,甚至在没有任何改变的情况下构建项目需要几十秒.特别是对于许多执行make -C,其具有新的进程开销.

这个问题的显而易见的解决方案是基于inotify操作系统的类似功能的构建工具.它会在某个文件发生变化时查看,并根据该列表单独编译该文件.

那里有这样的机器吗?开源项目的奖励积分.

makefile build inotify

14
推荐指数
1
解决办法
2386
查看次数

使用带有inotify的read

我一直在研究inotify调用,但在读取界面方面我仍然有点不稳定.这些是关于如何使用read(2)正确连接inotify的最相关的资源:

它们都以相同的方式实现它们,它们首先定义以下大小:

#define EVENT_SIZE  ( sizeof (struct inotify_event) )
#define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 )
Run Code Online (Sandbox Code Playgroud)

然后他们以这种方式使用它们:

length = read( fd, buffer, BUF_LEN );  

if ( length < 0 ) {
    perror( "read" );
}  

while ( i < length ) {
    struct inotify_event *event = ( struct inotify_event * ) &buffer[ i ];
    /* some processing */
    i += EVENT_SIZE + event->len;
}
Run Code Online (Sandbox Code Playgroud)

现在,我们知道名称是其中的一部分,struct inotify_event并且它具有可变长度.那么,缓冲区中的最后一个inotify_event是否会被截断?

假设有1023个inotify_events,路径为16个字节,另一个路径为32个字节.那会发生什么?后来会被截断吗?或者内核是否会看到它不适合缓冲区并完全放弃?

c inotify linux-kernel

14
推荐指数
1
解决办法
5842
查看次数

错误:ENOSPC:文件观察者数量的系统限制达到了角度

我在执行 Angular 10 项目时遇到此错误。

Error from chokidar (/myProject): Error: ENOSPC: System limit for number of file watchers reached, watch '/myProject/tsconfig.spec.json'

有没有办法解决这个错误?

linux inotify angular

14
推荐指数
5
解决办法
2万
查看次数

获取文件在Linux中为CIFS Mount创建通知

我在ubuntu服务器上通过CIFS安装了Windows共享.我需要知道何时将新文件添加到Windows共享中.我试过这个inotify程序:

http://www.thegeekstuff.com/2010/04/inotify-c-program-example/

哪个适用于标准目录,但无法捕获任何CIFS更改.我不一定需要使用inotify,虽然我想,但任何有关如何完成获取文件创建通知的建议都会很棒.

linux samba cifs inotify

13
推荐指数
2
解决办法
1万
查看次数

对tail的永久修复:无法监视`log/development.log':设备上没有剩余空间

我已经使用Ubuntu 11.10了一个多星期了.但是一段时间后,当我试图访问我的RoR项目中的日志时,我遇到了这个错误(标题中的那个).我找到了一个修复方法,即在终端中粘贴它:

sudo sysctl -w fs.inotify.max_user_watches = 16384

问题是我必须每天一次又一次地这样做.有谁知道如何在启动时执行此操作?或者有人知道任何永久解决方案?非常感谢!!!

ruby-on-rails tail inotify sysctl ubuntu-11.10

13
推荐指数
2
解决办法
1万
查看次数

如何在python中检查文件夹中的文件是否已更改?

我需要在python中知道每当在特定目录中添加/删除/修改新文件时有没有办法呢?我正在寻找一种类似"inofity"的功能(来自POSIX).

谢谢

python inotify

12
推荐指数
3
解决办法
2万
查看次数

mod_wsgi:通过Inotify重新加载代码 - 不是每N秒

到目前为止,我按照这个建议重新加载代码:

https://code.google.com/archive/p/modwsgi/wikis/ReloadingSourceCode.wiki

这具有缺点,即每N秒仅检测到代码变化.我可以使用N = 0.1,但这会导致无用的磁盘IO.

AFAIK可以通过python获得linux内核的inotify回调.

是否有更快的方法来检测代码更改并重新启动wsgi处理程序?

我们在linux上使用守护进程模式.

为什么代码重新加载mod_wsgi

有兴趣为什么我想要这个.这是我的设置:

大多数人使用" manage.py runserver"进行开发,并使用其他一些wsgi部署进行生产.

在我的背景下,我们自动创建了新系统,产品和开发系统大多相同.

一个操作系统(linux)可以托管N个系统(虚拟环境).

开发人员可以使用runserver或mod_wsgi.使用runserver有一个好处,它易于调试,mod_wsgi具有不需要首先启动服务器的好处.

mod_wsgi有一个好处,你知道URL: https://dev-server/system-name/myurl/

使用runserver,您不知道端口.使用案例:您想要从内部维基链接到开发系统....

我们过去使用过mod_wsgi的代码重新加载的脏黑客攻击:maximum-requests=1但这很慢.

python django mod-wsgi inotify

11
推荐指数
1
解决办法
522
查看次数