Користувацький ліміт годинник inotify досягнуто на Ubuntu 16.04


43

Щойно я встановив Ubuntu 16.04, і я отримую це попередження, коли запускаю SmartGit :

IOException: User limit of inotify watches reached

Більше того, я отримую це попередження tail -f:

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

Я ніколи не отримую цієї помилки з Ubuntu 14.04, а додатки та файли, які я використовую на новій Ubuntu, такі самі, як я використовував у попередній версії.

Єдині відповідні відмінності полягають у тому, що я додав додатковий жорсткий диск на ПК та налаштував інструмент резервного копіювання Ubuntu. Чи може ця проблема бути пов’язана з другим диском або з інструментом резервного копіювання?


Відповіді:


76

Поточний типовий параметр Xenial становить 8192 (див. Fs / notify / inotify / inotify_user.c у джерелі ядра), ви можете перевірити це, надрукувавши файл у stdout:

cat /proc/sys/fs/inotify/max_user_watches
8192

Можна збільшити число вгору, наприклад, подвоївши це значення до 16384, використовуючи:

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

майте на увазі, що інотифікований годинник споживає пам'ять, я думаю, що це близько 160 байт на годинник у 64-бітних системах.

Щоб встановити це постійно, додайте запис до /etc/sysctl.conf, наприклад:

echo fs.inotify.max_user_watches=16384 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

.. або вручну редагуйте /etc/sysctl.conf(для оновлення потрібні кореневі привілеї), а потім запустітьsudo sysctl -p


Так дякую. Я подвоїв це і тепер більше не маю попереджень. Скільки пам’яті (макс.) Буде витрачено на 16 384 годин? Мої розрахунки дають мені більше або менше 2,5 Мб . Це право?
Андреа

Щось у тому порядку, плюс щось накладне; він не надто великий у грандіозній схемі речі.s
Колін Іан Кінг

ось додаткова інформація про можливе споживання пам’яті (використовуваних) годинників askubuntu.com/questions/154255/…
michael

11

Наведені вище відповіді чудово діють, але це не пояснює, чому я шукав тут свою спробу повної відповіді -

Чому?

Програми, які синхронізують файли, такі як dropbox, git тощо, використовують inotify, щоб помітити зміни у файловій системі. Ліміт можна побачити по -

cat /proc/sys/fs/inotify/max_user_watches

Для мене це показує 100000 . Якщо цього обмеження недостатньо для моніторингу всіх файлів у каталозі, він видає цю помилку.


Збільшення кількості інотифікованих спостерігачів (коротка версія):

Якщо ви використовуєте Debian, RedHat або інший подібний дистрибутив Linux , запустіть наступне в терміналі:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Якщо ви запускаєте ArchLinux , замість цього запустіть таку команду (див. Тут).

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

Потім вставте його у свій термінал і натисніть клавішу Enter, щоб запустити його.


Технічні деталі:

Прослуховування використовує inotify за замовчуванням в Linux для моніторингу каталогів щодо змін. Не рідкість зустрічається системний ліміт кількості файлів, які ви можете відстежувати. Наприклад, лінійка інотифікації Ubuntu Lucid (64 біт) встановлена ​​на рівні 8192.

Ви можете отримати поточний ліміт перегляду файлів, що ініціює, виконавши:

$ cat /proc/sys/fs/inotify/max_user_watches

Якщо цього обмеження недостатньо для контролю всіх файлів у каталозі, для правильної роботи Служби потрібно збільшити ліміт.

Ви можете встановити новий ліміт, тимчасовий за допомогою:

$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p

Якщо ви хочете зробити свій ліміт постійним, скористайтеся:

$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

Можливо, вам також знадобиться звернути увагу на значення max_queued_events та max_user_in вещества, якщо Listen продовжує скаржитися.

Джерело: https://github.com/guard/listen/wiki/Убільшити-the-amount-of-inotify-watchers


3

Ви можете перевірити існуючий ліміт і, виходячи з цього, можете змінити його відповідно до вашої вимоги

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

Це дозволить усунути помилку.

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