Answers:
tail
的-f
(跟随)选项开始,例如tail -f /var/log/dmesg
:
尾巴:无法观看'/ var / log / dmsg':设备上没有剩余空间
出于好奇:为什么尾巴是“尾巴”?
strace tail -f ...
,成功后,结尾为:
inotify_add_watch(4,“ / var / log / dmesg”,IN_MODIFY ...)= 1
inotify_add_watch(4,“ / var / log / dmesg”,IN_MODIFY ..) = -1 ENOSPC(设备上没有剩余空间)
简短答案:当然,不要出汗。如果需要,直接增加到50万(524288)...在具有4GB +内存的现代系统上,使用的额外内存应该可以忽略不计。
sudo lsof | grep -i inotify | wc -l
检查用户是否达到max_user_watches
价值的最简单方法是与用户一起使用inotifywatch
包中的inotify-tools
,并检查是否仍然可以从文件中收集信息。
例如,inotifywatch -v /home/bruno/.profile
对于我来说,返回:
Establishing watches...
Total of 1 watches.
Finished establishing watches, now collecting statistics.
因此,inotify
有没有问题,在这里创建一个新的手表,没有任何问题。
如果您已达到inotify手表的最大限制,则会返回类似
Failed to watch /home/bruno/.profile; upper limit on inotify watches reached!
如果您看到类似这样的信息,则说明您已达到限制,需要增加允许的手表限制。
是的,它确实。但是根据这篇老文章,与正在运行的台式机的其他方面相比,其消耗的数量很少。
- 内存使用情况 -
inotify数据结构重量轻:
inotify监视是40字节inotify设备是68字节inotify事件是272字节
因此,假设一个设备有8192个手表,那么这些结构只会消耗320KB的内存。一次最多允许存在8个设备,这仍然只有2.5 MB
每个设备一次也可以有256个事件排队,每个设备总计68KB。如果所有设备都已打开并且具有完整的事件队列,则只有0.5 MB。
因此,在所有打开和已满的情况下,很少使用大约3 MB的内存。
每个inotify监视将目录/文件的inode固定在内存中,每个文件系统的inode大小不同,但假设它是512个byes。
因此,假设最大数量的全局监视处于活动状态,这将在inode缓存中固定32 MB的inode。同样在现代系统上也不是问题。
我当然认为自从撰写本文以来,事情并没有太大变化,但是查看我不担心的数字,增加限制不会显着增加RAM消耗。
inotify