Lỗi đồng hồ Grunt - Đang chờ lỗi Lỗi nghiêm trọng: xem ENOSPC


524

Tại sao tôi nhận được Waiting...Fatal error: watch ENOSPCkhi tôi chạy nhiệm vụ đồng hồ? Làm thế nào để tôi giải quyết vấn đề này?


13
Đối với bất kỳ ai xem điều này, điều này không cụ thể gruntnhưng bất kỳ chương trình nào sử dụng inotify bên dưới. Có một lời giải thích tốt tại unix.stackexchange.com/questions/13751/ .
Jesse Tốt

Câu trả lời:


1359

Sau khi thực hiện một số nghiên cứu tìm thấy giải pháp. Chạy lệnh dưới đây.

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

Đối với Arch Linux, hãy thêm dòng này vào /etc/sysctl.d/99-sysctl.conf:

fs.inotify.max_user_watches=524288

45
Chà, dường như nó đã giải quyết vấn đề của tôi ... Nhưng làm thế nào? Tại sao? Bạn có bất kỳ nguồn nào giải thích những gì đang xảy ra (hoặc đang xảy ra). Hoặc bạn có thể tự mình làm điều đó? Dù sao, cảm ơn ...
slacktracer

116
Hệ thống có giới hạn số lượng người dùng có thể xem. Bạn có thể hết đồng hồ khá nhanh nếu bạn có Grunt chạy với các chương trình khác như Dropbox. Lệnh này tăng số lượng đồng hồ tối đa mà người dùng có thể có.
Benjamin Manns

62
Đối với Arch Linux, thêm fs.inotify.max_user_watches=524288vào /etc/sysctl.d/99-sysctl.confvà sau đó thực thi sysctl --system. Điều này cũng sẽ tiếp tục trên các lần khởi động lại. Để biết thêm chi tiết: wiki.archlinux.org/index.php/Sysctl
tnajdek

38
npm dedupexóa nó cho tôi vấn đề
reergymerej

25
giải thích: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf ghi vào cuối tệp /etc/sysctl.conf dòng "fs.inotify.max_user_watches = 524288" sudo sysctl -p cấu hình lại kernel khi chạy, tải tệp /etc/sysctl.conf làm tham số
kds

186

Bất cứ khi nào bạn cần chạy sudo something ...để sửa chữa một cái gì đó, bạn nên dừng lại để suy nghĩ về những gì đang xảy ra. Mặc dù câu trả lời được chấp nhận ở đây là hoàn toàn hợp lệ, nhưng nó xử lý triệu chứng thay vì vấn đề. Sắp xếp tương đương với việc mua túi yên lớn hơn để giải quyết vấn đề: lỗi, không thể tải thêm rác lên ngựa. Pony đã có quá nhiều rác đã được chất lên, con ngựa đó đang ngất đi vì kiệt sức.

Một cách khác (có thể so sánh với việc lấy rác thừa của ngựa và đặt vào bãi rác), là chạy:

npm dedupe

Sau đó đi chúc mừng bản thân vì đã làm cho ngựa hạnh phúc.


42
Cảm ơn đã làm cho con ngựa hạnh phúc.
Christian

2
Chính xác thì nó làm gì? Nó giải quyết vấn đề của tôi chắc chắn. Cảm ơn @grenade
Arjun KR

4
Lệnh 'npm depupe' đi qua cây mô-đun npm của bạn và di chuyển mọi gói lên trên cây càng nhiều càng tốt. Kết quả là một cây phẳng. Nó di chuyển một gói ngay cả khi nó không bị trùng lặp. Bạn có thể đọc thêm về những gì xảy ra với các phiên bản mô-đun khác nhau trong trường hợp này, tại docs.npmjs.com/cli/dedupe
Arun Reddy

1
nó không giúp được gì, tôi đã thử sudovà bây giờ nó làm việc cho tôi.
asbedami

6
Trong trường hợp của tôi, vấn đề của tôi dường như là đã cài đặt Dropbox, dường như sử dụng rất nhiều đồng hồ. Vì vậy, tôi đã phải sử dụng: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pnhư trong câu trả lời được chấp nhận, nhưng +1 để dạy tôinpm dedupe
Johann Echavarria

36

Sau khi thử câu trả lời của lựu đạn, bạn có thể sử dụng cách khắc phục tạm thời:

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

Điều này thực hiện tương tự như câu trả lời của kds , nhưng không có những thay đổi. Điều này rất hữu ích nếu lỗi chỉ xảy ra sau một số thời gian hoạt động của hệ thống của bạn.


3
Đây phải là câu trả lời được chấp nhận vì sự cố xảy ra một cách tự nhiên bởi những gì đang chạy vào lúc này chứ không phải do một cấu hình xấu (xem ví dụ "con ngựa").
arielnmz

7

Để tìm ra ai đang thực hiện các trường hợp inotify , hãy thử lệnh này ( nguồn ):

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

Của tôi trông như thế này:

 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

Sử dụng ps -p 2857, tôi đã có thể xác định quá trình 2857 là sublime_text. Chỉ sau khi đóng tất cả các cửa sổ tuyệt vời, tôi mới có thể chạy tập lệnh nút của mình.


điều tương tự với tôi đối với vscode nhưng tôi nghĩ nó cũng liên quan đến đồng hồ tập tin
pcnate

3

Tôi gặp phải lỗi này sau khi PC khách của tôi gặp sự cố, jest --watchlệnh tôi đang chạy trên máy chủ vẫn tồn tại và tôi đã cố gắng chạy jest --watchlại.

Việc bổ sung để /etc/sysctl.confmô tả trong các câu trả lời ở trên có tác dụng xoay quanh vấn đề này, nhưng điều quan trọng là tìm ra quy trình cũ của tôi thông qua ps aux | grep nodekillnó.


0

Trong trường hợp của tôi, nó có liên quan đến mã vs chạy trên máy Linux của tôi. Tôi bỏ qua một cảnh báo xuất hiện về người xem tập tin bla bla. Giải pháp nằm trên trang tài liệu vs-code cho linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in- this-Large-workspace-error-enospc

Giải pháp gần như giống nhau (nếu không giống nhau) với các câu trả lời được chấp nhận, chỉ cần giải thích thêm cho bất kỳ ai đến đây sau khi gặp vấn đề từ vs-code.


0

Trong trường hợp của tôi, tôi thấy rằng tôi có một plugin tích cực cho Vim, chỉ cần khởi động lại nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.