解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”
Linux系统中使用tail -f
命令是如果遇到下面提示:
tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制
inotify
和polling
两种机制都是什么?
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 机制”。