Подтвердить что ты не робот

Как узнать, какие часы inotify зарегистрированы?

У меня есть ограничение на доступность inotify до 1024 (я думаю, что по умолчанию 128?). Несмотря на это, йоман, гвардия и Dropbox постоянно терпят неудачу, и скажите мне, чтобы мой лимит inotify. Прежде чем это сделать, я хотел бы узнать, что потребляет все мои часы (у меня очень мало файлов в Dropbox).

Есть ли какая-нибудь область /proc или/sys или какой-нибудь инструмент, который я могу запустить, чтобы узнать, какие часы зарегистрированы в данный момент?

4b9b3361

Ответ 1

параметры файловой системы inotify

sysctl fs.inotify

открытые файлы

lsof | grep inotify | wc -l

Увеличьте значения, подобные этому

  • sysctl -n -w fs.inotify.max_user_watches=16384
  • sysctl -n -w fs.inotify.max_user_instances=512

Ответ 2

  1. Максимальное количество часов по умолчанию inotify составляет 8192; его можно увеличить, написав в /proc/sys/fs/inotify/max_user_watches.
    Вы можете использовать sysctl fs.inotify.max_user_watches для проверки текущего значения.

  2. Используйте tail -f, чтобы проверить, превышает ли ваша ОС максимальный предел наблюдения inotify.
    Внутренняя реализация команды tail -f использует механизм inotify для отслеживания изменений файлов.
    Если у вас закончились часы inotify, вы, скорее всего, получите эту ошибку:

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

  3. Чтобы узнать, какие часы inotify были зарегистрированы, вы можете обратиться к этому и этому. Я пытался, но не получил идеальный результат. :-(

Ссылка:
https://askubuntu.com/questions/154255/how-can-i-tell-if-i-am-out-of-inotify-watches
https://unix.stackexchange.com/questions/15509/whos-consuming-my-inotify-resources
https://bbs.archlinux.org/viewtopic.php?pid=1340049

Ответ 3

Я думаю,

sudo ls -l /proc/*/fd/* | grep notify

может быть полезным. Вы получите список pids, у которого зарегистрирован inotify fd.

Я не знаю, как получить больше информации, чем это! НТН

Ответ 4

Так как в результатах Google это много, я копирую часть моего ответа из аналогичного вопроса на Unix/Linux StackExchange:

Я столкнулся с этой проблемой, и ни один из этих ответов не дает ответа на вопрос "сколько часов каждый процесс использует в настоящее время?" В одной строке указано, сколько экземпляров открыто, что является лишь частью истории, а трассировка полезна только для просмотра новых часов.

Это даст вам файл со списком открытых экземпляров inotify и количеством часов, которые у них есть, а также pids и двоичные файлы, которые их породили, отсортированные в порядке убывания по количеству часов:

sudo lsof | awk '/anon_inode/ { gsub(/[urw]$/,"",$4); print "/proc/"$2"/fdinfo/"$4; }' | while read fdi; do count=$(sudo grep -c inotify $fdi); exe=$(sudo readlink $(dirname $(dirname $fdi))/exe); echo -e $count"\t"$fdi"\t"$exe; done | sort -nr > watches

Если вам интересно, что делает этот большой клубок беспорядка и почему, я подробно объяснил на исходный ответ.

Ответ 5

Следующая команда терминала отлично работала на моем компьютере с Ubuntu 16.04:

for foo in /proc/\*/fd/*; do readlink -f $foo; done |grep inotify |cut -d/ -f3 |xargs -I '{}' -- ps --no-headers -o '%p %U %a' -p '{}' |uniq -c |sort -n

Моя проблема заключалась в том, что большая часть моего жесткого диска была загружена в виде папки в Sublime Text. Между /opt/sublime_text/plugin_host 8992 и /opt/sublime_text/sublime_text у Sublime было 18 случаев inotify, в то время как остальные мои программы были между 1-3.

Поскольку я занимался разработкой Ionic Mobile App, я сократил количество экземпляров на 5, добавив большую папку Node.js "node_modules" в список игнорирования в настройках Sublime.

"folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules"]

Источник: https://github.com/SublimeTextIssues/Core/issues/1195