ข้อผิดพลาดของ Grunt watch - กำลังรอ ... ข้อผิดพลาดร้ายแรง: ดู ENOSPC


524

ทำไมฉันถึงได้รับWaiting...Fatal error: watch ENOSPCเมื่อฉันทำภารกิจดู? ฉันจะแก้ปัญหานี้ได้อย่างไร


13
สำหรับใครก็ตามที่ดูสิ่งนี้สิ่งนี้ไม่ได้เฉพาะเจาะจงgruntแต่มีโปรแกรมใด ๆ ที่ใช้inotifyด้านล่าง มีคำอธิบายที่ดีที่เป็นunix.stackexchange.com/questions/13751/...
Jesse Good

คำตอบ:


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 คำสั่งนี้เพิ่มจำนวนนาฬิกาสูงสุดที่ผู้ใช้สามารถมีได้
Benjamin Manns

62
สำหรับลินุกซ์ Arch เพิ่ม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 ...เพื่อแก้ไขบางสิ่งคุณควรหยุดคิดเกี่ยวกับสิ่งที่เกิดขึ้น ในขณะที่คำตอบที่ยอมรับได้ที่นี่ใช้ได้อย่างสมบูรณ์ แต่การรักษาอาการไม่ใช่ปัญหา Sorta เทียบเท่ากับการซื้อถุงอานขนาดใหญ่เพื่อแก้ปัญหาข้อผิดพลาดไม่สามารถโหลดขยะลงบนม้าได้ โพนี่มีขยะมากแล้วม้านั่นก็หมดสติ

ทางเลือกอื่น (อาจเทียบได้กับการทิ้งขยะส่วนเกินออกจากม้าและวางลงในกองขยะ) คือการเรียกใช้:

npm dedupe

จากนั้นไปแสดงความยินดีกับตัวเองที่ทำให้ม้ามีความสุข


42
ขอบคุณที่ทำให้ม้ามีความสุข
คริสเตียน

2
มันทำอะไรกันแน่? มันแก้ไขปัญหาของฉันได้อย่างแน่นอน ขอบคุณ @grenade
Arjun KR

4
คำสั่ง 'npm dedupe' เดินผ่านทรีโมดูล npm ของคุณและย้ายทุกแพ็คเกจขึ้นไปบนต้นไม้ให้มากที่สุด ผลที่ได้คือต้นไม้แบน มันเคลื่อนย้ายแพ็คเกจแม้ว่ามันจะไม่ซ้ำกัน คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นกับโมดูลรุ่นต่างๆในกรณีนี้ได้ที่ docs.npmjs.com/cli/dedupe
Arun Reddy

1
มันไม่ได้ช่วยฉันลองด้วยsudoและตอนนี้มันก็ใช้ได้สำหรับฉัน
asedsami

6
ในกรณีของฉันปัญหาของฉันน่าจะติดตั้ง Dropbox ซึ่งดูเหมือนว่าจะใช้นาฬิกาเป็นจำนวนมาก ดังนั้นฉันจึงต้องใช้: fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -pเช่นเดียวกับในคำตอบที่ได้รับการยอมรับ แต่ +1 สำหรับการสอนฉันnpm dedupe
โยฮันน์ Echavarria

36

หลังจากลองใช้คำตอบของระเบิดมือคุณสามารถใช้การแก้ไขชั่วคราว:

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

สิ่งนี้ทำในสิ่งเดียวกันกับคำตอบของ kdsแต่ไม่มีการเปลี่ยนแปลงอย่างต่อเนื่อง สิ่งนี้มีประโยชน์หากข้อผิดพลาดเกิดขึ้นหลังจากระบบของคุณหยุดทำงาน


3
นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากปัญหาเกิดขึ้นโดยธรรมชาติจากสิ่งที่กำลังดำเนินอยู่ในขณะนี้และไม่ใช่จากการกำหนดค่าที่ไม่ดี (ดูตัวอย่าง "pony")
arielnmz

7

ในการค้นหาว่าใครเป็นคนสร้างอินสแตนซ์ให้ลองคำสั่งนี้ (ที่มา ):

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-code ที่ทำงานบนเครื่อง Linux ของฉัน ฉันไม่สนใจคำเตือนที่โผล่ขึ้นมาเกี่ยวกับตัวตรวจสอบไฟล์ bla bla วิธีแก้ไขอยู่บนหน้าเอกสาร vs-code สำหรับ linux https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-- นี้-ขนาดใหญ่พื้นที่ทำงานข้อผิดพลาด-ENOSPC

การแก้ปัญหาเกือบจะเหมือนกัน (ถ้าไม่เหมือนกัน) เป็นคำตอบที่ยอมรับมีเพียงคำอธิบายเพิ่มเติมสำหรับผู้ที่มาที่นี่หลังจากพบปัญหาจาก vs-code


0

ในกรณีของฉันฉันพบว่าฉันมีปลั๊กอินที่ก้าวร้าวสำหรับ Vim เพิ่งเริ่มต้นใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.