रिएक्टिव नेटिव एरर: ENOSPC: फाइल देखने वालों की संख्या के लिए सिस्टम सीमा


160

मेरे पास एक नया रिक्त प्रतिक्रिया देशी ऐप है।

कुछ नोड मॉड्यूल स्थापित करने के बाद मुझे यह त्रुटि मिली।

Running application on PGN518.
internal/fs/watchers.js:173
   throw error;
   ^

Error: ENOSPC: System limit for number of file watchers reached, watch '/home/badis/Desktop/react-native/albums/node_modules/.staging'
   at FSWatcher.start (internal/fs/watchers.js:165:26)
   at Object.watch (fs.js:1253:11)
   at NodeWatcher.watchdir (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:175:20)
   at NodeWatcher.<anonymous> (/home/badis/Desktop/react-native/albums/node modules/sane/src/node watcher. js:310:16)
   at /home/badis/Desktop/react-native/albums/node modules/graceful-fs/polyfills.js:285:20
   at FSReqWrap.oncomplete (fs.js:154:5)

मुझे पता है कि यह सभी फ़ाइल परिवर्तनों को देखने के लिए चौकीदार के लिए पर्याप्त जगह से संबंधित नहीं है।

मैं जानना चाहता हूं कि यहां कार्रवाई करने का सबसे अच्छा तरीका क्या है?

क्या मुझे node_modulesइसे जोड़कर फ़ोल्डर को अनदेखा करना चाहिए .watchmanconfig?


24
कभी कोड, त्रुटियों या आउटपुट की छवियों को पोस्ट करें! stackoverflow.com/help/how-to-ask
Rob

1
क्या आपने metro.config.js बैकलिस्ट में कुछ कोड जोड़ने पर विचार किया है? यह स्कैन की मात्रा को कम करना चाहिए: stackoverflow.com/questions/41813211/…
deepelement

जवाबों:


268

लिनक्स फाइलसिस्टम इवेंट्स, इंडिविजुअल फाइल्स या डायरेक्ट्रीज को देखने के लिए इनओटिफाई पैकेज का उपयोग करता है ।

चूंकि रिएक्ट / एंगुलर हॉट-रीलोड्स और रीकॉम्पल्स फाइल्स को सेव करते हैं, इसलिए प्रोजेक्ट की सभी फाइलों पर नजर रखने की जरूरत है। Inotify वॉच लिमिट को बढ़ाते हुए चेतावनी संदेशों को छिपाना चाहिए।

आप संपादन का प्रयास कर सकते हैं

# insert the new value into the system config
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# check that the new value was applied
cat /proc/sys/fs/inotify/max_user_watches

# config variable name (not runnable)
fs.inotify.max_user_watches=524288

41
यह यह नहीं बताता है कि समस्या क्या है, समाधान क्या है, या समाधान समस्या को कैसे ठीक करता है।
देशी कोडर

2
वाह, मैं इसी तरह की समस्या में भाग गया जैसा कि ऊपर लिखा गया था, लेकिन इस समाधान ने 100% हल किया। धन्यवाद
akolliy

3
हम अधिक अनुमति देने के बजाय चौकीदारों को कैसे दूर करते हैं?
जोनाथन

2
काम करता है लेकिन अगर मैं इस अधिकार को पढ़ता हूं, तो यह सीमा को बढ़ाता है। वैसे भी क्या मैं इसके बजाय खुले हुए वॉचर्स को बंद कर सकता हूं?
zozo

1
@ NativeCoder नया संस्करण उस समस्या को हल करेगा?
जार्डिलियोर सेप 7'20

184

इस त्रुटि का अर्थ यह है कि सिस्टम द्वारा मॉनिटर की गई फ़ाइलों की संख्या सीमा तक पहुंच गई है !!

परिणाम: निष्पादित कमांड विफल रही! या चेतावनी फेंकें (जैसे कि प्रतिक्रिया-मूलक शुरुआत VSCode निष्पादित करना)

उपाय:

सिस्टम मॉनिटरिंग फाइलों की संख्या को संशोधित करें

उबंटू

sudo gedit /etc/sysctl.conf

सबसे नीचे एक पंक्ति जोड़ें

fs.inotify.max_user_watches=524288

फिर बच कर बाहर निकलें!

sudo sysctl -p

इसकी जांच करना

फिर इसे हल किया जाता है!


अरे, यह मेरे मामले में हल हो गई। मेरी पोस्ट पर भी साझा किया। धन्यवाद
राशिद खान

धन्यवाद। इससे मेरी समस्या भी हल हो गई।
नेल्सन काटले

धन्यवाद! इससे मुझे मदद मिली।
18

66

आप इसे ठीक कर सकते हैं, जिससे देखने वालों की मात्रा बढ़ जाती है।

यदि आप तकनीकी विवरणों में रुचि नहीं रखते हैं और केवल सुनने के लिए काम करना चाहते हैं:

  • यदि आप डेबियन, रेडहैट या अन्य समान लिनक्स वितरण चला रहे हैं, तो टर्मिनल में निम्नलिखित को चलाएँ:

    $ 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

फिर इसे अपने टर्मिनल में पेस्ट करें और इसे चलाने के लिए एंटर पर दबाएं।


तकनीकी विवरण

परिवर्तनों के लिए निर्देशिकाओं की निगरानी करने के लिए लिनक्स पर डिफ़ॉल्ट रूप से inotify का उपयोग करके सुनें। आपके द्वारा मॉनिटर की जाने वाली फ़ाइलों की संख्या पर एक सिस्टम सीमा का सामना करना असामान्य नहीं है। उदाहरण के लिए, उबंटू ल्यूसिड (64 बिट) इनोटिफ़ाइड सीमा 8192 पर सेट है।

आप अपनी वर्तमान inotify फ़ाइल वॉच सीमा को निष्पादित करके प्राप्त कर सकते हैं:

$ cat /proc/sys/fs/inotify/max_user_watches

जब यह सीमा एक निर्देशिका के अंदर सभी फाइलों की निगरानी करने के लिए पर्याप्त नहीं है, तो सुनो को ठीक से काम करने के लिए सीमा को बढ़ाया जाना चाहिए।

आप एक नई सीमा तय कर सकते हैं:

$ 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यदि सुनने की शिकायत रहती है।


2
वाह बहुत-बहुत धन्यवाद, इसने इस समस्या को मेरी प्रतिक्रिया के रूप में जेएस के साथ एक समान त्रुटि के लिए हल कर दिया क्योंकि मेरी परियोजना बड़ी हो गई थी लेकिन मैं इस त्रुटि के आईएनएस और आउट को समझ नहीं पाया। यह एक उचित उत्तर है, एक अच्छा दिन है
पियरे शवलियर

4
कुछ लोगों को इसके लिए बेहतर समाधान करने की जरूरत है। आश्रितों से भरे हाथ के साथ एक नई परियोजना शुरू करते समय मुझे ऐसा कुछ नहीं करना चाहिए।
पैट्रिक डब्ल्यू। मैकमोहन

आपके विस्तृत उत्तर के लिए धन्यवाद! इसने मेरी बहुत मदद की। मैं रिएक्टिव नेटिव विकसित कर रहा हूं, वास्तव में आरएन क्ली को इसके अधिक मूल्य की आवश्यकता है। इसलिए, मैं इसे उपरोक्त आदेशों के साथ सफलतापूर्वक बदल देता हूं। मैं सोच रहा हूं कि क्या इसका उच्च मूल्य प्रदर्शन और स्मृति उपयोग को खराब तरीके से प्रभावित कर सकता है?
मौनदादी

8

हटाएं node_modules प्रतिक्रिया

rm -r node_modules

yarn or npm install

yarn start or npm start

यदि त्रुटि तब होती है, तो इस विधि का पुनः उपयोग करें


यह काम क्यों करता है? यदि यह देखी जा रही फ़ाइलों की संख्या कम कर देता है, तो आवश्यक निर्भरता को पुन: स्थापित करने से फाइलें वापस नहीं जुड़ती हैं?
आईकेडवाटर

2
@Itwater हटाने नोड_मॉड्यूल्स का कारण बनता है कि उस पर कोई घड़ियों के साथ एक नया inifyify उदाहरण बनाएं। संभवतः रिएक्ट में एक रिसाव है, जिससे इनओटीफाई इंस्टेंसेस भरे जा सकते हैं, इसीलिए पहली बार में त्रुटि दिखाई देती है।
खाते को

7

से आधिकारिक दस्तावेज :

"विज़ुअल स्टूडियो कोड इस बड़े कार्यक्षेत्र में फ़ाइल परिवर्तनों के लिए देखने में असमर्थ है" (त्रुटि ENOSPC)

जब आप इस सूचना को देखते हैं, तो यह इंगित करता है कि वीएस कोड फ़ाइल वॉचर हैंडल से बाहर चल रहा है क्योंकि कार्यक्षेत्र बड़ा है और इसमें कई फाइलें हैं। वर्तमान सीमा को चलाकर देखा जा सकता है:

cat /proc/sys/fs/inotify/max_user_watches

संपादन द्वारा इसकी सीमा को अधिकतम तक बढ़ाया जा सकता है

/etc/sysctl.conf

और फ़ाइल के अंत में इस लाइन को जोड़ना:

fs.inotify.max_user_watches = 524288

नए मान को रनिंग द्वारा लोड किया जा सकता है

sudo sysctl -p

ध्यान दें कि आर्क लिनक्स थोड़ा अलग तरीके से काम करता है, विवरणों के लिए देखने वालों की मात्रा में वृद्धि देखें।

जबकि 524,288 फ़ाइलों की अधिकतम संख्या है, जिन्हें देखा जा सकता है, यदि आप ऐसे वातावरण में हैं जो विशेष रूप से मेमोरी में बाधा है, तो आप संख्या को कम करना चाह सकते हैं। प्रत्येक फ़ाइल घड़ी 540 बाइट्स (32-बिट) या ~ 1kB (64-बिट) लेती है, इसलिए यह मानते हुए कि सभी 524,288 घड़ियों का उपभोग किया जाता है, जिसके परिणामस्वरूप लगभग 256MB (32-बिट) या 512MB (64-बिट) की ऊपरी सीमा होती है )।

एक अन्य विकल्प

वी.एस. कोड फ़ाइल वॉचर से विशिष्ट कार्यक्षेत्र निर्देशिकाओं को बाहर करना है। files.Exerlude सेटिंग के साथ। Files.watcherExclude के लिए डिफ़ॉल्ट .pot_modules और कुछ .गित को शामिल नहीं करता है, लेकिन आप अन्य निर्देशिकाओं को जोड़ सकते हैं जिन्हें आप VS कोड ट्रैक नहीं करना चाहते हैं।

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/node_modules/*/**": true
  }

7

मैं sudo यानी का उपयोग करके इस मुद्दे को हल किया

sudo yarn start

या

sudo npm start

5
हालांकि ये आदेश प्रश्न को हल कर सकते हैं, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और संभवत: अधिक वोट मिले। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं।
ब्रायन

यह अब तक का सबसे सरल समाधान है w / o किसी भी कॉन्फ़िगरेशन को बदलना लेकिन जैसा कि @Brian ने कहा, एक संदर्भ या स्पष्टीकरण एक प्रभावी तरीके से मदद करेगा।
जीनियस

1
यह सबसे खराब उपाय है। sudoइस तरह के उपयोग के लिए इच्छुक नहीं है और अन्य मुद्दों का भी कारण बन सकता है।
इगोर पर्रा

4

यह मेरे साथ एक नोड ऐप के साथ हुआ था जिसे मैं डेबियन आधारित डिस्ट्रो पर विकसित कर रहा था। सबसे पहले, एक सरल पुनरारंभ ने इसे हल किया, लेकिन यह फिर से दूसरे ऐप पर हुआ।

चूंकि यह उन चौकीदारों की संख्या से संबंधित है जो फाइलों पर नज़र रखने और निर्देशिका में परिवर्तन देखने के लिए इनोटाइज़ का उपयोग करते हैं, आपको एक उच्च संख्या को सीमा के रूप में सेट करना होगा:

मैं इसे यहां पोस्ट किए गए उत्तर से हल करने में सक्षम था (उसके लिए धन्यवाद!)

तो, मैं भाग गया:

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

Https://github.com/guard/listen/wiki/Inc बढ़ते-the-amount-of-inotify-watchers#the-technical- details पर क्या हो रहा है इसके बारे में और पढ़ें

आशा है कि इससे सहायता मिलेगी!


1
मंज़रो पर बढ़िया काम करता है!
उमर दुलामी

उपरोक्त लिंक की अनुमति की आवश्यकता है, यहां वेकबैक मशीन संस्करण है: web.archive.org/web/20200611175407/https://github.com/guard/…
Mahmoud K.

1

जैसा कि @snishalaka द्वारा पहले ही बताया गया है, आप देखने वालों की संख्या बढ़ा सकते हैं।

हालांकि, मुझे लगता है कि डिफ़ॉल्ट संख्या काफी अधिक है और केवल तभी पहुंचती है जब प्रक्रियाओं को ठीक से साफ नहीं किया जाता है। इसलिए, मैंने अपने कंप्यूटर को संबंधित गितुब मुद्दे पर प्रस्तावित के रूप में पुनः आरंभ किया और त्रुटि संदेश चला गया था।


1

कृपया इस लिंक को देखें [1]। विजुअल स्टूडियो कोड ने इस त्रुटि संदेश के लिए एक संक्षिप्त स्पष्टीकरण का उल्लेख किया है। मुझे भी उसी त्रुटि का सामना करना पड़ा। रिलेवेंट फ़ाइल में नीचे के पैरामीटर को जोड़ने से यह समस्या ठीक हो जाएगी।

 fs.inotify.max_user_watches=524288

[१] https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc


0

मैं एक linuxmint distro पर इस मुद्दे का सामना किया । ऐसा तब हुआ जब मैंने अपने ऐप में बहुत सारे फोल्डर और सबफोल्डर्स / फाइल्स जोड़े / पब्लिक फोल्डर में थे। मैंने इस फिक्स को लागू किया और इसने अच्छा काम किया ...

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

निर्देशिका को / etc फ़ोल्डर में बदलें: cd /etc

फिर इसे चलाएं: sudo systcl -p

काम करने के लिए आपको अपना टर्मिनल बंद करना पड़ सकता है npm start

यदि यह विफल हो जाता है तो मैं विश्व स्तर पर प्रतिक्रिया-स्क्रिप्ट स्थापित करने और आपके आवेदन को सीधे उसी के साथ चलाने की सलाह देता हूं।

$ npm i -g --save react-scripts

तब के बजाय npm startरन react-scripts startआपके आवेदन को चलाने के लिए।


0

यदि आप डॉकर में अपना प्रोजेक्ट चला रहे हैं, तो आपको echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.confहोस्ट मशीन में सभी और अन्य कमांड को करना चाहिए , क्योंकि कंटेनर को वह सेटिंग विरासत में मिल जाएगी (और इसे सीधे अंदर करने से काम नहीं चलेगा)।


0

देर से जवाब, और पहले से ही कई अच्छे जवाब हैं।

यदि आप यह देखना चाहते हैं कि अधिकतम फ़ाइल घड़ियाँ बड़ी हैं, और यदि सीमा नहीं है, तो यह जाँचने के लिए एक साधारण स्क्रिप्ट चाहते हैं, यहाँ यह है:

#!/usr/bin/env bash

let current_watches=`sysctl -n fs.inotify.max_user_watches`

if (( current_watches < 80000 ))
then
  echo "Current max_user_watches ${current_watches} is less than 80000."
else
  echo "Current max_user_watches ${current_watches} is already equal to or greater than 80000."
  exit 0
fi

if sudo sysctl -w fs.inotify.max_user_watches=80000 && sudo sysctl -p && echo fs.inotify.max_user_watches=80000 | sudo tee /etc/sysctl.d/10-user-watches.conf
then
  echo "max_user_watches changed to 80000."
else
  echo "Could not change max_user_watches."
  exit 1
fi

स्क्रिप्ट सीमा को बढ़ाती है 80000, लेकिन एक सीमा निर्धारित करने के लिए स्वतंत्र महसूस करें जो आप चाहते हैं।


-1
  1. सबसे पहले आप हर बार रूट विशेषाधिकार के साथ चला सकते हैं

    sudo npm शुरू

  2. या आप नोड_मॉडल फ़ोल्डर को हटा सकते हैं और npm installफिर से स्थापित करने के लिए उपयोग कर सकते हैं

  3. या आप स्थायी समाधान प्राप्त कर सकते हैं

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


-5

मुझे लाइब्रेरी का उपयोग करके एक ही समस्या थी wifiलेकिन जब मैंने अपना नेटवर्क बदला तो यह पूरी तरह से काम कर गया।

अपना नेटवर्क कनेक्शन बदलें


2
यह एक टिप्पणी हो सकती है
मिलन देसाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.