хвіст: 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

щоб перевірити, чи працює занадто багато команд хвоста, наприклад, ікру за допомогою crontab.


га це насправді спрацювало, набравши занадто багато файлів
Олександр Міллз

Як перекласти дані? Чи можете ви пояснити, що означає кожна інформація та що з цим робити? Наприклад:root 20161 0.0 0.0 11132 1044 pts/0 S+ 17:27 0:00 grep tail
Крістен

Проблема полягає лише в тому випадку, якщо TOO MANY процеси збігаються, якщо відповідність рядків містить "grep", генерується самою командою. Будь ласка, використовуйте команду "pgrep tail".
tangxinfa

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.