inotifywait 运行守护程序模式给出错误无法初始化 inotify

Posted

技术标签:

【中文标题】inotifywait 运行守护程序模式给出错误无法初始化 inotify【英文标题】:inotifywait running daemon mode giving error Couldn't initialize inotify 【发布时间】:2015-10-22 16:32:14 【问题描述】:

我在守护程序模式下运行 inotifywait (inotify-tools-3.14-1),但是,它给出了以下错误并且没有建立监视。此外,由于它在 while 循环中,因此创建了许多 inotifywait 守护进程。

如果使用--monitor 而不是--daemon 运行,我没有这样的问题。有人可以帮忙修复它吗?非常感谢。

"无法初始化 inotify。您运行的是 Linux 2.6.13 或更高版本,并且是 编译内核时启用 CONFIG_INOTIFY 选项?如果是这样的话, 一些神秘的东西出了问题。请发送电子邮件至 radu.voicilas@gmail.com 并提及您看到了这条消息。"

下面是代码:

while true  # run indefinitely
do
  inotifywait --daemon --outfile /tmp/daemon.log --event close_write --format '%w%f %e %T' --timefmt '%F %T' $folder |  while read eventInfo
     do
        call_another_fun $eventInfo
        break
     done
   done

【问题讨论】:

【参考方案1】:

当后台运行的 inotify 进程过多时,我也会收到“无法初始化 inotify...”错误消息。 pkill inotify 解决了这个问题。

【讨论】:

我没有任何inotify 进程正在运行,我仍然收到此错误。【参考方案2】:

卸载

apt-get remove inotify-tools

然后重新安装

apt-get install inotify-tools

帮我解决了。在卸载和重新安装之间,我碰巧也运行了sudo apt autoremove,但我怀疑它是否是解决方案的一部分。

【讨论】:

【参考方案3】:

您应该增加 inotify 实例的最大数量。

sudo sysctl fs.inotify.max_user_instances=2048

在我的桌面系统上,128 个实例的默认值对于一些文件浏览器、IDE 和电子应用程序来说太低了。它们都有多个 inotify 实例。

要使其永久化,请将此行添加到 /etc/sysctl.conf

fs.inotify.max_user_instances=2048

【讨论】:

以上是关于inotifywait 运行守护程序模式给出错误无法初始化 inotify的主要内容,如果未能解决你的问题,请参考以下文章

inotifywait shell 脚本作为守护进程运行

Bash 脚本:给出错误:gzip:<文件>.conf.gz:文件意外结束

Flutter错误无法启动守护进程

错误:线程“守护程序运行状况统计”中的异常 java.lang.OutOfMemoryError:Java 堆空间

错误:无法在 http+docker://localhost 连接到 Docker 守护程序 - 它正在运行吗? [关闭]

无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是不是正在运行?带有自托管运行器的 Gitlab Cloud CI/CD 错误