解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”

解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”

Linux系统中使用tail -f命令是如果遇到下面提示:

tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制

inotifypolling两种机制都是什么?

  • inotify : 可以理解为订阅模式,文件或目录有变化发送消息给订阅的进程,这样订阅进程等待事件就干别的事了,节省CPU资源。
  • polling: 可以理解为主动查询模式, 由进程自己主动定期监控文件或目录是否发生变化,隔一会看下文件变没变呢?,比较耗CPU资源。

解决问题

回归到polling机制了,虽然不会影响系统正常运行,但是还是一个问题,下面这个办法帮你解决:

只需要修改/etc/sysctl.conf配置文件中的配置即可:

fs.inotify.max_user_instances=1024
fs.inotify.max_user_watches=65535

添加到/etc/sysctl.conf中, 添加好后,执行命令立即生效:

sudo sysctl -p

最后

再试试tail -f命令,是不是已经解决了?

其实关于fs.inotify的参数就这几个:

$ sudo sysctl fs.inotify

# 如果应用程序不读取它们,限制内核队列中将保留多少文件系统事件
fs.inotify.max_queued_events = 16384

# 每个用户最多有多少应用程序可以观看文件
fs.inotify.max_user_instances = 1024

#每个用户总共可以监视的文件系统数
fs.inotify.max_user_watches = 65535

理解了inotify机制,以后再遇到类似问题就好解决了。

转载本文时请注明出处及本文链接地址解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注