Когда я пытаюсь tail -f catalina.out
, я получаю ошибку:
tail: inotify cannot be used, reverting to polling: Too many open files
Я попробовал ответ в этом посте: слишком много открытых файлов - как найти виновника
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Когда я запустил вышеупомянутую команду, вывод был
17 6115
13 6413
10 6417
10 6415
9 6418
9 6416
9 6414
8 6419
4 9
4 8
Я не вижу ни одного процесса с 1024 открытыми файлами. Разве число файлов не открыто 17,13,10,10,9? Или я не так понимаю? И все это были bash, sshd, apache2, tomcat имел номер 4.
Я также сделал, lsof | grep tail | wc -l
который вернулся 20
. Эти цифры не очень большие, так почему же tail -f catalina.out
не получается ?
tail
сообщение было немного иначе:tail: inotify resources exhausted
. Этот ответ помог мне. Вы также можете использовать,sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -p
чтобы проверить, помогает ли это без постоянного изменения. Этот пост также помогает nefaria.com/2014/08/tail-inotify-resources-exhaustedЯ думаю, что ответ не полный (он ничего не говорит о максимальном ограничении файлов, открытых в системе).
Существует два ограничения в отношении максимального количества открытых файлов:
Максимальный лимит файлов, открытых на процесс .
ulimit -n
ulimit -n new_limit_number
Вот команда, чтобы получить 10 лучших процессов, имеющих много открытых файлов:
Максимальный лимит файлов, открытых на систему .
cat /proc/sys/fs/file-max
echo new_limit_number > /proc/sys/fs/file-max
lsof | wc -l
источник
Скорее всего, у вас закончились
inotify
часы. Возможно, вы используете некоторые инструменты синхронизации файлов (например, Dropbox) в фоновом режиме?В Linux внутренняя реализация
tail -f
команды используетinotify
механизм по умолчанию, чтобы отслеживать изменения файлов. Если у вас закончились всеinotify
часы (по умолчанию 8192), вамinotify -f
нужно переключиться на опрос, чтобы обнаружить изменения в этом файле.Конечно, вы можете изменить максимальное количество
inotify
часов.ссылка:
http://www.quora.com/How-is-tail-f-implemented
http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html
https: // serverfault.com/questions/510708/tail-inotify-cannot-be-used-reverting-to-polling-too-many-open-files
источник
sysctl fs.inotify.max_user_instances
получит лимит на пользователяinotify
.Я испытал это, и все лимиты системы были достаточно высокими, но настройки по умолчанию, как правило, относительно низки, вы можете увеличить их
sysctl.conf
и перезагрузитьsysctl -p
.источник
Бегать
проверить, не слишком ли много запущенных хвостовых команд, таких как spawn от crontab.
источник
root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Проверьте версию своего ядра, возможно, это ошибка:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1101666
источник