tail: inotify нельзя использовать, возвращаясь к опросу: слишком много открытых файлов


16

Когда я пытаюсь 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не получается ?

Ответы:


17

Это было решено для меня, следуя инструкциям на http://peter-butkovic.blogspot.com/2013/08/tail-inotify-resources-exhausted.html

Постоянное решение (сохраняется при перезапуске) Добавление строки:

fs.inotify.max_user_watches=1048576

чтобы:

/etc/sysctl.conf

постоянное фиксированное предельное значение (даже между перезапусками).

тогда сделай

sysctl -p

1
Увеличение файловых дескрипторов мне не помогает. Мое tailсообщение было немного иначе: tail: inotify resources exhausted. Этот ответ помог мне. Вы также можете использовать, sudo sysctl -w fs.inotify.max_user_watches=1048576 && sysctl -pчтобы проверить, помогает ли это без постоянного изменения. Этот пост также помогает nefaria.com/2014/08/tail-inotify-resources-exhausted
— Руслан Стельмаченко,

9

Я думаю, что ответ не полный (он ничего не говорит о максимальном ограничении файлов, открытых в системе).

Существует два ограничения в отношении максимального количества открытых файлов:

  1. Максимальный лимит файлов, открытых на процесс .

    • Вы можете увидеть значение этого лимита, используя: ulimit -n
    • Вы можете изменить этот лимит, используя: ulimit -n new_limit_number
    • Вот команда, чтобы получить 10 лучших процессов, имеющих много открытых файлов:

      lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
  2. Максимальный лимит файлов, открытых на систему .

    • Вы можете увидеть значение этого лимита, используя: cat /proc/sys/fs/file-max
    • Вы можете изменить этот лимит, используя: echo new_limit_number > /proc/sys/fs/file-max
    • Подсчитать все дескрипторы открытых файлов: lsof | wc -l

6

Скорее всего, у вас закончились 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


3

sysctl fs.inotify.max_user_instancesполучит лимит на пользователя inotify.

Я испытал это, и все лимиты системы были достаточно высокими, но настройки по умолчанию, как правило, относительно низки, вы можете увеличить их sysctl.confи перезагрузить sysctl -p.


3

Бегать

ps aux | grep tail

проверить, не слишком ли много запущенных хвостовых команд, таких как spawn от crontab.


ха это действительно сработало, отслеживая слишком много файлов
— Александр Миллс

Как мне перевести данные? Можете ли вы объяснить, что означает каждая часть информации и что с этим делать? Например:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
— Кристия

Это проблема только в том случае, если совпадает слишком много процессов, совпадающая строка, содержащая «grep», генерируется самой командой. Пожалуйста, используйте команду "pgrep tail".
— tangxinfa

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.