Grunt watch error - Ожидание ... Неустранимая ошибка: смотреть ENOSPC


524

Почему я получаю, Waiting...Fatal error: watch ENOSPCкогда я запускаю задачу наблюдения? Как мне решить эту проблему?


13
Для тех, кто просматривает это, это не относится только к gruntлюбой программе, использующей inotify . Хорошее объяснение можно найти по адресу unix.stackexchange.com/questions/13751/… .
— Джесси Гуд

Ответы:


1359

После некоторых исследований нашли решение. Запустите приведенную ниже команду.

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

Для Arch Linux добавьте эту строку в /etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

45
Ну, похоже, это решило мою проблему ... Но как? Почему? Есть ли у вас источники, объясняющие, что происходит (или происходило). Или ты сам можешь это сделать? Во всяком случае, спасибо ...
— Slacktracer

116
Система имеет ограничение на количество файлов, которые может просматривать пользователь. Вы можете довольно быстро исчерпать часы, если у вас есть Grunt, запущенный с другими программами, такими как Dropbox. Эта команда увеличивает максимальное количество часов, которое может иметь пользователь.
— Бенджамин Маннс

62
Для Arch Linux добавить fs.inotify.max_user_watches=524288к /etc/sysctl.d/99-sysctl.confи затем выполнить sysctl --system. Это также будет сохраняться при перезагрузке. Для более подробной информации: wiki.archlinux.org/index.php/Sysctl
— tnajdek

38
npm dedupeпрояснил это для меня. проблема
— reergymerej

25
объяснение: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf записывает в конце файла /etc/sysctl.conf строку "fs.inotify.max_user_watches = 524288", sudo sysctl -p перенастраивает ядро ​​во время выполнения, загружая файл /etc/sysctl.conf в качестве параметра
— kds

186

Каждый раз, когда вам нужно бежать, sudo something ...чтобы что-то исправить, вы должны остановиться, чтобы подумать о том, что происходит. Несмотря на то, что принятый здесь ответ является совершенно верным, он рассматривает скорее симптом, чем проблему. Сорта, эквивалентная покупке больших седельных сумок для решения проблемы: ошибка, не может загрузить больше мусора на пони. У Пони уже столько мусора, что пони теряет сознание от истощения.

Альтернативой (возможно, сравнимой с удалением лишнего мусора с пони и размещением на свалке) является запуск:

npm dedupe

Тогда иди поздравляй себя с тем, чтобы сделать пони счастливым.


42
Спасибо за то, что осчастливил пони.
— Кристиан

2
Что именно это делает? Это точно решило мою проблему. Спасибо @ граната
— Арджун КР

4
Команда 'npm dedupe' проходит по дереву вашего модуля npm и максимально перемещает каждый пакет в дереве. В результате получается плоское дерево. Он перемещает пакет, даже если он не дублируется. Вы можете узнать больше о том, что происходит с различными версиями модулей в этом случае, на docs.npmjs.com/cli/dedupe
— Арун Редди

1
это не помогло, я попробовал, sudoи теперь это работает для меня.
— Asedsami

6
В моем случае моя проблема, кажется, состоит в том, чтобы установить Dropbox, который, кажется, использует много часов. Таким образом, я должен был использовать: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pкак в принятом ответе, но +1 для учить меняnpm dedupe
— Иоганн Эчаваррия

36

После попытки ответа на гранату вы можете использовать временное исправление:

sudo bash -c 'echo 524288 > /proc/sys/fs/inotify/max_user_watches'

Это делает то же самое, что и ответ kds , но без сохранения изменений. Это полезно, если ошибка возникает только после некоторого времени работы вашей системы.


3
Это должен быть принятый ответ, так как проблема, естественно, вызвана тем, что работает в данный момент, а не плохой конфигурацией (см. Пример «пони»).
— arielnmz

7

Чтобы узнать, кто создает экземпляры inotify , попробуйте эту команду ( источник ):

for foo in /proc/*/fd/*; do readlink -f $foo; done | grep inotify | sort | uniq -c | sort -nr

Моя выглядела так:

 25 /proc/2857/fd/anon_inode:inotify
  9 /proc/2880/fd/anon_inode:inotify
  4 /proc/1375/fd/anon_inode:inotify
  3 /proc/1851/fd/anon_inode:inotify
  2 /proc/2611/fd/anon_inode:inotify
  2 /proc/2414/fd/anon_inode:inotify
  1 /proc/2992/fd/anon_inode:inotify

Используя ps -p 2857, я смог идентифицировать процесс 2857 как sublime_text. Только после закрытия всех возвышенных окон я смог запустить скрипт своего узла.


то же самое со мной для vscode, но я думаю, что это также относится и к просмотру файлов
— pcnate

3

Я столкнулся с этой ошибкой после сбоя моего клиентского ПК, jest --watchкоманда, которую я выполнял на сервере, сохранилась, и я попытался запустить jest --watchснова.

Дополнение к /etc/sysctl.confописанному в ответах выше обошло эту проблему, но было также важно найти мой старый процесс через него ps aux | grep nodeи killего.


0

В моем случае это было связано с vs-кодом, работающим на моей машине с Linux. Я проигнорировал предупреждение, которое выскочило о наблюдателе файла бла бла. Решение находится на странице документации vs-code для linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in- это-большой рабочее пространство ошибок-ENOSPC

Решение почти такое же (если не то же самое), что и принятые ответы, просто есть больше объяснений для тех, кто попадает сюда после столкновения с проблемами из vs-кода.


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