Ответ 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
У меня есть ограничение на доступность inotify до 1024 (я думаю, что по умолчанию 128?). Несмотря на это, йоман, гвардия и Dropbox постоянно терпят неудачу, и скажите мне, чтобы мой лимит inotify. Прежде чем это сделать, я хотел бы узнать, что потребляет все мои часы (у меня очень мало файлов в Dropbox).
Есть ли какая-нибудь область /proc или/sys или какой-нибудь инструмент, который я могу запустить, чтобы узнать, какие часы зарегистрированы в данный момент?
параметры файловой системы 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
Максимальное количество часов по умолчанию inotify
составляет 8192; его можно увеличить, написав в /proc/sys/fs/inotify/max_user_watches.
Вы можете использовать sysctl fs.inotify.max_user_watches
для проверки текущего значения.
Используйте tail -f
, чтобы проверить, превышает ли ваша ОС максимальный предел наблюдения inotify
.
Внутренняя реализация команды tail -f
использует механизм inotify
для отслеживания изменений файлов.
Если у вас закончились часы inotify
, вы, скорее всего, получите эту ошибку:
tail: inotify нельзя использовать, возвращаясь к опросу: слишком много открытых файлов
Чтобы узнать, какие часы 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
Я думаю,
sudo ls -l /proc/*/fd/* | grep notify
может быть полезным. Вы получите список pids, у которого зарегистрирован inotify fd.
Я не знаю, как получить больше информации, чем это! НТН
Так как в результатах 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
Если вам интересно, что делает этот большой клубок беспорядка и почему, я подробно объяснил на исходный ответ.
Следующая команда терминала отлично работала на моем компьютере с 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