Questions tagged «inotify»

1
达到内核inotify监视限制
我目前在linux机器上遇到问题,因为我已经以root身份返回了返回错误的命令,因为已经达到了inotify监视限制。 # tail -f /var/log/messages [...] tail: cannot watch '/var/log/messages': No space left on device # inotifywatch -v /var/log/messages Establishing watches... Failed to watch /var/log/messages; upper limit on inotify watches reached! Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.` 我用谷歌搜索了一下,发现的每个解决方案都是通过增加以下限制: sudo sysctl fs.inotify.max_user_watches=<some random high number> …
206 linux  kernel  inotify 

7
谁在消耗我的资源化资源?
在最近升级到Fedora 15之后,我发现许多工具都因以下错误而出错: tail: inotify resources exhausted tail: inotify cannot be used, reverting to polling 也不仅仅是tail报告了inotify的问题。有什么方法可以查询内核以找出哪些进程正在消耗inotify资源?当前与inotify相关的sysctl设置如下所示: fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.inotify.max_queued_events = 16384
49 fedora  kernel  inotify 

3
如何使用inotifywait监视目录以创建特定扩展名的文件
我已经看到了这个答案。 您应该考虑使用inotifywait作为示例: inotifywait -m /path -e create -e moved_to | while read path action file; do echo "The file '$file' appeared in directory '$path' via '$action'" # do something with the file done 我的问题是,上面的脚本监视目录以创建任何类型的文件,但是如何修改inotifywait命令以仅在创建了某种类型/扩展名的文件(或移动到目录中)时报告?.xml创建任何文件时报告。 我尝试过的是: 我已经运行了inotifywait --help命令,并且已经阅读了命令行选项。它具有--exclude <pattern>和--excludei <pattern>命令可以排除某些类型的文件(通过使用regEx),但是我需要一种方法来仅包括某些类型/扩展名的文件。

2
有没有办法在管道上使用xargs?
我正在尝试自动将移动到一个文件夹的flac文件转换为另一个文件夹中的mp3。 我当前的代码行是这样的: inotifywait -m -r -q -e moved_to --format "'%w%f'" ~/test | xargs -I x flac -cd x - | lame -b 320 - /media/1tb/x.mp3 为了解释到目前为止的工作方式,inotifywait递归地监视〜/ test到那里移动的文件,并将路径和文件名输出到管道。xargs使用该名称并创建正确的flac命令,将x替换为文件名并将文件解码到另一个管道。在新管道中,lame将flac的输出处理到/ media下的mp3中。我希望xargs以某种方式到达整个管道,在lame命令中替换x或以某种方式将其发送到两个命令都可以访问的变量。我试图弄乱命名管道和爵士乐,但是在两个命令之间通过管道传输实际数据这一事实使我费解了。
15 shell  pipe  xargs  inotify 

1
为什么inotifywatch无法检测到添加文件的更改?
我正在尝试/tmp使用inotifywatch以下方法监视文件夹中的更改: sudo inotifywatch -v -r /tmp 创建了几个文件(touch /tmp/test-1 /tmp/test-2)后,我要终止inotifywatch(按Ctrl- C,这将显示以下统计信息: Establishing watches... Setting up watch(es) on /tmp OK, /tmp is now being watched. Total of 39 watches. Finished establishing watches, now collecting statistics. total attrib close_write open create filename 8 2 2 2 2 /tmp/ 输出仅显示统计信息,而不显示我期望的文件(如here或here)。我尝试了不同类型的访问(通过cat,mktemp等),但这是同一回事。 我错过了什么?这是因为我正在使用VPS,并且某些内容受到限制吗? 操作系统:VPS上的Debian 7.3(inotify-tools)

1
卵化如何工作?
根据维基百科, inotify是一个Linux内核子系统,它注意到文件系统的更改。它取代了以前的通知。 程序,同步文件(如crashplan,保管箱,GIT)建议更换中用户指南,用户增加max_user_watches(1,2,3)。 据我对inotify的了解,操作系统“被告知”文件已更改,而不是要求操作系统“去寻找”更改。 我假设在每个目录中都创建了一个“ inotify”文件。它是否正确?有没有办法从命令行与inotify进行交互? 资源 为什么inotify事件在NFS挂载上有所不同? Inotify等待目录中有大量文件
14 inotify 

1
与vim一起使用inotifywait
我有一个简单的脚本,可以监视文件的更改并将其与远程副本同步: #!/bin/bash while inotifywait -e close_write somefile do rsync somefile user@host.domain:./somefile done 它在nano上工作正常,但在vim上工作失败。当我使用nano时,它输出: somefile CLOSE_WRITE,CLOSE 并开始下一个循环,等待其他版本。 当我使用vim时,没有输出,脚本仅以退出代码0关闭。 我做了一些研究,发现close_write是与vim一起使用initofywait的正确参数(首先我想使用Modify事件),但是由于某种原因,它对我来说失败了。
14 files  vim  rsync  inotify 

4
通知/ proc下文件的更改
我用bash编写了一个小的“守护程序”,如果检测到耳机,它将切换到耳机,否则,将切换到带有PulseAudio的外部USB扬声器。 我正在寻找的是一种获取文件更改通知的方法/proc/asound/card0/codec#0,就像inotifywait在真实文件上一样(将/ proc下的文件视为“伪文件”)。 我发现我的代码有点疯狂,因为它整天都可以运行sleep 1,awk每天运行86400次:) while sleep 1; do _1=${_2:-} _2=$(awk '/Pin-ctls/{n++;if(n==4)print}' '/proc/asound/card0/codec#0') [[ ${_1:-} = $_2 ]] || if [[ $_2 =~ OUT ]]; then use_speakers else use_internal fi done 我正在寻找的是类似的东西(此示例不起作用): codec=/proc/asound/card0/codec#0 while inotifywait $codec; do if [[ $(awk '/Pin-ctls/{n++;if(n==4)print}' $codec) =~ OUT ]]; then use_speakers else use_internal fi …
13 proc  inotify 

1
mutt:自动显示新消息
打开Mutt后,直到按下某个键(例如向下箭头)后,我才能看到新的电子邮件。然后出现新的电子邮件。mutt是否有办法识别新电子邮件已到达并自动显示电子邮件,而不必每隔几分钟按一次键? 我正在使用maildir格式(本地存储的电子邮件)。最好的方法是什么?mutt应该每n秒检查一次,还是应该由操作系统通知它,也许使用inotify?
12 email  mutt  inotify 

1
inotify是否在写入开始或完成时触发通知?
想象一下两个进程,一个读取器和一个写入器,它们通过ext3 fs上的常规文件进行通信。Reader IN_MODIFY在文件上具有inotify 监视。Writer在单个write()调用中将1000字节写入文件。Reader获取inotify事件,然后调用fstat该文件。读者看到什么? 是否可以保证Reader至少可以取回st_size文件上的1000 ?从我的实验来看,似乎并非如此。 是否可以保证Reader可以实际读取read()1000个字节? 这是在严重的I / O绑定框中发生的。例如,sar显示大约1秒的等待时间。就我而言,阅读器实际上在获取inotify事件之后等待10秒钟stat,然后再调用,并且得到的结果太小。 我希望的是inotify事件在文件准备好之前不会传递。我怀疑实际上正在发生的是inotify事件write()在Writer中的调用期间触发,并且只要准备好了,数据实际上就可供系统上的其他进程使用。在这种情况下,10s是不够的时间。 我想我只是在寻找确认内核实际上实现了我所猜测的inotify方法。另外,是否有任何选择可以改变这种行为? 最后,鉴于这种行为,渗入的意义何在?在获得事件之后,您将减少为轮询文件/目录,直到实际可用数据为止。一直以来都应该这样做,而忽略了inotify。 *** 编辑 ** * * 好吧,就像我经常看到的那样,既然我了解自己的实际工作,那么我所看到的行为实际上是有道理的。^ _ ^ 我实际上是在响应文件所在目录中的IN_CREATE事件。因此,实际上我是根据文件的创建来对文件进行stat()响应,而不一定是IN_MODIFY事件,后者可能会在以后到达。 我将更改代码,以便一旦获得IN_CREATE事件,便会订阅文件本身的IN_MODIFY,并且在获得IN_MODIFY事件之前,我实际上不会尝试读取文件。我意识到那里有一小窗口,我可能会错过对该文件的写操作,但这对于我的应用程序是可以接受的,因为在最坏的情况下,文件将在最大秒数后关闭。
12 linux  files  stat  inotify 

1
如何通过SSHFS使用inotify或命名管道?
谢谢sshfs魔术,我可以使用以下命令从远程服务器挂载主目录 sshfs user@server:/home/user ~/remote 乐观,我想我会设置一个本地inotify-hook上~/remote/logFile(在sshfs安装),因此本地程序可以对远程日志的变化作出反应。 cd ~/remote touch logFile # create remote file inotifywait logFile & # set up local inotify-hook ssh user@server -x touch /home/user/logFile # touch file from remote 什么都没发生。inotifywait除非我touch在本地将文件设为静音。类似地,写入命名管道失败。 为什么是这样?我如何弥合这一差距? 我可以inotifywait在远程上运行,破解文件系统更改序列化策略并维持与本地的连接,但是我基本上是在重新实现SSHFS。它完全杀死了抽象。
12 sshfs  inotify  fifo 

4
杀死在后台运行的Shell脚本
我已经编写了一个shell脚本来使用inotifyt-tools的inotifywait实用程序监视目录。我希望该脚本在后台连续运行,但是我也希望能够在需要时将其停止。 为了使它连续运行,我习惯了while true;像这样: while true; do #a set of commands that use the inotifywait utility end 我已经将其保存在文件中/bin并使其可执行。为了使其在后台运行,我使用nohup <script-name> &并关闭了终端。 我不知道如何停止此脚本。我看过的答案在这里和非常密切相关的问题在这里。 更新1: 根据下面的@InfectedRoot的答案,我已经能够使用以下策略解决我的问题。初次使用 ps -aux | grep script_name 并sudo kill -9 <pid>用来杀死进程。然后,我不得不再次pgrep inotifywait使用sudo kill -9 <pid>ID作为返回值。 这行得通,但我认为这是一种凌乱的方法,我正在寻找更好的答案。 更新2: 答案包括杀死2个进程。这很重要,因为在命令行上运行脚本会启动2个进程,1个是脚本本身,2个是inotify进程。
12 bash  shell  kill  inotify 

2
当文件加载到保管箱文件夹中时,使用inotifywait移动文件
我试图找到一种方法,将文件立即出现在CentOS上的保管箱中,立即将其移动到另一个文件夹。 我已经在互联网上搜寻了一些线索,但是除了需要使用inotify一个调用脚本来处理文件的事实以外,我无能为力了。 我的BASH知识非常有限,我怀疑是否可以用PHP编写。 换句话说,如何使用显示的文件立即将其移动到另一个文件夹inotify?
12 bash  centos  inotify 

1
使用inotify监视目录但无法正常工作100%
我已经编写了一个bash脚本来监视特定目录/root/secondfolder/: #!/bin/sh while inotifywait -mr -e close_write "/root/secondfolder/" do echo "close_write" done 当我创建一个名为fourth.txtin 的文件/root/secondfolder/并将其写入内容,保存并关闭时,它输出以下内容: /root/secondfolder/ CLOSE_WRITE,CLOSE fourth.txt 但是,它不会回显“ close_write”。这是为什么?

1
为什么inotify事件在NFS挂载上有所不同?
前一段时间,我注意到将文件保存到NFS挂载和本地文件系统时,由inotify报告的事件有所不同。 基础VFS是否不应该提供文件操作的统一视图? 以下是VIM在Debian 7.1(Linux 3.2)中保存文件的痕迹 在NFS挂载上: wd=1 mask = 32 (IN_OPEN) wd=1 mask = 16 (IN_CLOSE_NOWRITE) wd=1 mask = 2048 (IN_MOVE_SELF) wd=1 mask = 4 (IN_ATTRIB) wd=1 mask = 1024 (IN_DELETE_SELF) wd=1 mask = 32768 ) 在本地文件系统上 wd=1 mask = 32 (IN_OPEN) wd=1 mask = 16 (IN_CLOSE_NOWRITE) wd=1 mask = …
10 linux  nfs  inotify 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.