Câu trả lời:
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
fs.inotify.max_user_watches=524288
vào /etc/sysctl.d/99-sysctl.conf
và 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
npm dedupe
xóa nó cho tôi vấn đề
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ố
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.
sudo
và bây giờ nó làm việc cho tôi.
fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
như trong câu trả lời được chấp nhận, nhưng +1 để dạy tôinpm dedupe
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.
Để 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.
Tôi gặp phải lỗi này sau khi PC khách của tôi gặp sự cố, jest --watch
lệ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 --watch
lại.
Việc bổ sung để /etc/sysctl.conf
mô 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 node
và kill
nó.
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.
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ó.
grunt
như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/ .