คำตอบข้างต้นใช้งานได้ดี แต่มันไม่ได้อธิบายว่าทำไมฉันถึงมองไปรอบ ๆ เพื่อหาคำตอบที่สมบูรณ์ -
ทำไม?
โปรแกรมที่ซิงค์ไฟล์เช่นดรอปบ็อกซ์ git ฯลฯ ใช้ inotify เพื่อแจ้งให้ทราบการเปลี่ยนแปลงของระบบไฟล์ ขีด จำกัด สามารถดูได้โดย -
cat /proc/sys/fs/inotify/max_user_watches
สำหรับผมมันแสดงให้เห็นถึง100000 เมื่อข้อ จำกัด นี้ไม่เพียงพอที่จะตรวจสอบไฟล์ทั้งหมดภายในไดเรกทอรีมันจะพ่นข้อผิดพลาดนี้
การเพิ่มจำนวน inotify watchers (เวอร์ชั่นสั้น):
หากคุณใช้Debian, RedHat หรือการกระจาย Linux อื่น ๆ ที่คล้ายกันให้รันสิ่งต่อไปนี้ในเทอร์มินัล:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
หากคุณใช้งานArchLinuxให้เรียกใช้คำสั่งต่อไปนี้แทน (ดูที่นี่เพื่อเหตุผล):
echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
จากนั้นวางลงในเครื่องเทอร์มินัลของคุณและกดบนเพื่อเรียกใช้
รายละเอียดทางเทคนิค:
Listen ใช้ inotify โดยค่าเริ่มต้นบน Linux เพื่อตรวจสอบไดเรกทอรีสำหรับการเปลี่ยนแปลง ไม่ใช่เรื่องแปลกที่จะพบข้อ จำกัด ของระบบกับจำนวนไฟล์ที่คุณสามารถตรวจสอบได้ ตัวอย่างเช่นขีด จำกัด inotify ของ Ubuntu Lucid (64 บิต) ถูกตั้งค่าเป็น 8192
คุณสามารถรับข้อ จำกัด การเฝ้าดูไฟล์ inotify ปัจจุบันของคุณโดยการดำเนินการ:
$ cat /proc/sys/fs/inotify/max_user_watches
เมื่อขีด จำกัด นี้ไม่เพียงพอที่จะตรวจสอบไฟล์ทั้งหมดภายในไดเรกทอรีต้องเพิ่มขีด จำกัด เพื่อให้ Listen ทำงานได้อย่างถูกต้อง
คุณสามารถกำหนดขีด จำกัด ใหม่ชั่วคราวด้วย:
$ sudo sysctl fs.inotify.max_user_watches=524288
$ sudo sysctl -p
หากคุณต้องการ จำกัด วงเงินถาวรให้ใช้:
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p
คุณอาจต้องใส่ใจกับค่าของ max_queued_events และ max_user_instances หากฟังต่อไปเรื่อย ๆ
ที่มา: https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers