Grunt watch error - Aguardando ... Erro fatal: assista ENOSPC

524

Por que eu recebo Waiting...Fatal error: watch ENOSPCquando executo a tarefa de observação? Como resolvo esse problema?

kds
fonte
13
Para quem vê isso, isso não é específico, gruntmas sim de qualquer programa usando o inotify abaixo. Há uma boa explicação em unix.stackexchange.com/questions/13751/… .
Jesse Boa

Respostas:

1359

Depois de fazer algumas pesquisas, encontrei a solução. Execute o comando abaixo.

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

Para o Arch Linux, adicione esta linha ao /etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288
kds
fonte
45
Bem, parece que resolveu meu problema ... Mas como? Por quê? Você tem alguma fonte que explique o que está acontecendo (ou estava acontecendo). Ou você pode fazê-lo? De qualquer forma, obrigado ...
slacktracer
116
O sistema tem um limite para quantos arquivos podem ser assistidos por um usuário. Você pode ficar sem relógios rapidamente se o Grunt estiver sendo executado com outros programas como o Dropbox. Este comando aumenta a quantidade máxima de relógios que um usuário pode ter.
Benjamin Manns
62
For Arch Linux adicionar fs.inotify.max_user_watches=524288a /etc/sysctl.d/99-sysctl.confe, em seguida, executar sysctl --system. Isso também persistirá nas reinicializações. Para obter mais detalhes: wiki.archlinux.org/index.php/Sysctl
tnajdek
38
npm dedupeesclareceu para mim. problema
reergymerej 4/14
25
explicação: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf grava no final do arquivo /etc/sysctl.conf a linha "fs.inotify.max_user_watches = 524288" sudo sysctl -p reconfigura o kernel no tempo de execução, carregando o arquivo /etc/sysctl.conf como um parâmetro
kds
186

A qualquer momento que você precisar executar sudo something ...para corrigir algo, faça uma pausa para pensar no que está acontecendo. Embora a resposta aceita aqui seja perfeitamente válida, ela está tratando o sintoma e não o problema. É o equivalente a comprar alforjes maiores para resolver o problema de: error, não é possível carregar mais lixo no pônei. O pônei já carrega tanto lixo que está desmaiando de exaustão.

Uma alternativa (talvez comparável a retirar o excesso de lixo do pônei e colocar no lixão) é executar:

npm dedupe

Então vá se felicitar por fazer o pônei feliz.

Grenade
fonte
42
Obrigado por fazer o pônei feliz.
Christian
2
O que exatamente isso faz? Isso resolveu meu problema com certeza. Obrigado @grenade
Arjun KR
4
O comando 'npm dedupe' percorre sua árvore de módulos npm e move todos os pacotes para cima na árvore o máximo possível. O resultado é uma árvore plana. Move um pacote mesmo quando não está duplicado. Você pode ler mais sobre o que acontece com diferentes versões de módulos neste caso, em docs.npmjs.com/cli/dedupe
Arun Reddy
1
não ajudou, tentei sudoe agora está funcionando para mim.
asedsami
6
No meu caso, meu problema parece ser o Dropbox instalado, que parece usar muitos relógios. Então eu tive que usar: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pcomo na resposta aceita, mas +1 para Ensina-menpm dedupe
Johann Echavarria
36

Depois de tentar a resposta da granada, você pode usar uma correção temporária:

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

Isso faz o mesmo que a resposta do kds , mas sem persistir nas alterações. Isso é útil se o erro ocorrer apenas após algum tempo de atividade do seu sistema.

Arne L.
fonte
3
Essa deve ser a resposta aceita, pois o problema é causado naturalmente pelo que está sendo executado no momento e não por uma configuração incorreta (veja o exemplo "pony").
Arielnmz
7

Para descobrir quem está fazendo instâncias inotify , tente este comando ( fonte ):

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

O meu ficou assim:

 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

Usando ps -p 2857, consegui identificar o processo 2857 como sublime_text. Somente depois de fechar todas as janelas sublimes, consegui executar o script do nó.

Michael Lewis
fonte
o mesmo comigo para vscode mas eu acho que ela está relacionada com relógios de arquivo bem
pcnate
3

Eu encontrei esse erro depois que meu PC cliente travou, o jest --watchcomando que eu estava executando no servidor persistiu e tentei executar jest --watchnovamente.

O aditamento ao /etc/sysctl.confdescrito nas respostas acima trabalharam contornar esse problema, mas também era importante encontrar meu velho processo via ps aux | grep nodee kill-lo.

Aaron
fonte
0

No meu caso, estava relacionado ao código vs em execução na minha máquina Linux. Eu ignorei um aviso que apareceu sobre o observador de arquivos bla bla. A solução está na página de documentos vs-code do linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in- this-large-workspace-error-enospc

A solução é quase a mesma (se não a mesma) das respostas aceitas, apenas tem mais explicações para quem chega aqui depois de encontrar os problemas do código vs.

azeez
fonte
0

No meu caso, descobri que tenho um plugin agressivo para o Vim, apenas o reiniciei.

Vitaly Zdanevich
fonte