Советы PHP-разработчика

Блог содержащий короткие заметки касающиеся программирования для web.

Ошибка Error: watch ENOSPC в gulp и grunt при запуске команды watch на ubuntu

Ошибка Error: watch ENOSPC в gulp и grunt при запуске команды watch на ubuntu

Мое изучение галпа началось не совсем удачно. После установки и создания проекта в ответ на gulp watch, он встретил меня ошибкой Error: watch ENOSPC. К счастью, причина нашлась достаточно быстро и была решена. А теперь немного подробнее об этом.

Команда watch, как понятно из названия, отслеживает изменение файлов и запускает необходимые скрипты. Вот тут и таится "опасность". Если в проекте достаточно много файлов, то процесс падает и возвещает об ошибке примерно так:

[11:34:08] Using gulpfile ~/www/assets/gulpfile.js
[11:34:08] Starting 'watch'...
[11:34:08] 'watch' errored after 151 ms
[11:34:08] Error: watch ENOSPC
    at errnoException (fs.js:1024:11)
    at FSWatcher.start (fs.js:1056:11)
    at Object.fs.watch (fs.js:1081:11)

Так вот проблема заключается в настройке ядра ОС, точнее в подсистеме inotify ядра linux, которая получает уведомления о событиях, связанных с файлами и каталогами. Она имеет три параметра, но нас интересует max_user_watches - количество файлов, отслеживаемых одним пользователем системы. Вот именно его и необходимо увеличить, задав для него большое значение. Ниже приведу пример команды для данной манипуляции:

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

На этом все. Запускаем gulp watch и наблюдаем за корректностью его работы.

P.S. Данная проблема также проявляется при использовании grunt watch, так как он имеет схожий принцип работы. Решение для него аналогичное.

  • 2015-11-06 15:46:17