Inotify घड़ियों की उपयोगकर्ता सीमा उबंटू 16.04 पर पहुंच गई


43

मैंने अभी Ubuntu 16.04 स्थापित किया है और स्मार्टगिट शुरू करने पर मुझे यह चेतावनी मिलती है :

IOException: User limit of inotify watches reached

इसके अलावा मुझे यह चेतावनी मिल रही है tail -f:

tail: inotify resources exhausted 

tail: inotify cannot be used, reverting to polling

मुझे उबंटू 14.04 के साथ यह त्रुटि कभी नहीं मिली और नए उबंटू पर उपयोग किए जाने वाले एप्लिकेशन और फाइलें पिछले संस्करण में उपयोग किए गए काफी समान हैं।

केवल प्रासंगिक अंतर यह है कि मैंने पीसी पर एक अतिरिक्त हार्ड डिस्क जोड़ा और मैंने उबंटू के बैकअप टूल को कॉन्फ़िगर किया। क्या यह समस्या दूसरी डिस्क के साथ या बैकअप टूल के साथ संबंधित हो सकती है?


जवाबों:


76

Xenial पर वर्तमान डिफ़ॉल्ट 8192 है (कर्नेल स्रोत में fs / अधिसूचित / inotify / inotify_user.c देखें), आप फ़ाइल को stdout में प्रिंट करके इसे सत्यापित कर सकते हैं:

cat /proc/sys/fs/inotify/max_user_watches
8192

आप संख्या को बढ़ा सकते हैं, उदाहरण के लिए, इसे 16384 तक दोगुना करते हुए, उपयोग करते हुए:

echo 16384 | sudo tee /proc/sys/fs/inotify/max_user_watches

यह ध्यान रखें कि घड़ियों को स्मरण शक्ति का उपभोग करती है, मुझे लगता है कि यह 64 बिट सिस्टम पर प्रति घड़ी लगभग 160 बाइट्स है।

इसे स्थायी रूप से सेट करने के लिए, /etc/sysctl.conf में एक प्रविष्टि जोड़ें, उदाहरण के लिए:

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

.. के लिए मैन्युअल रूप से संपादित करें /etc/sysctl.conf(आपको इसे अपडेट करने के लिए रूट विशेषाधिकार की आवश्यकता है) और फिर चलाएंsudo sysctl -p


हाँ धन्यवाद। मैंने इसे दोगुना कर दिया और अब मेरे पास चेतावनी नहीं है। 16.384 घड़ियों के लिए कितनी मेमोरी (अधिकतम पर) खपत होगी? मेरी गणना मुझे कम या ज्यादा 2.5MB देती है । क्या यह सही है?
एंड्रिया

उस क्रम में कुछ, प्लस कुछ ओवरहेड; बात की भव्य योजना में यह बहुत बड़ा नहीं है।
कॉलिन इयान किंग

यहाँ की (प्रयुक्त) संभव स्मृति की खपत के बारे में कुछ अधिक जानकारी घड़ियां हैं askubuntu.com/questions/154255/...
माइकल

11

ऊपर दिए गए उत्तर बड़े काम आते हैं, लेकिन यह स्पष्ट नहीं करते हैं कि जो मैं यहां देख रहा था, वह एक पूर्ण उत्तर के लिए मेरा प्रयास था -

क्यों?

प्रोग्राम जो ड्रॉपबॉक्स, गिट आदि जैसी फाइलों को सिंक करते हैं, वे फाइल सिस्टम में बदलावों को नोटिस करने के लिए इनऑटीफाई करते हैं। सीमा को इसके द्वारा देखा जा सकता है -

cat /proc/sys/fs/inotify/max_user_watches

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


टॉटिफाई वॉचर्स (लघु संस्करण) की मात्रा में वृद्धि:

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

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

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


तकनीकी जानकारी:

परिवर्तनों के लिए निर्देशिकाओं की निगरानी करने के लिए लिनक्स पर डिफ़ॉल्ट रूप से इनओटिफाई का उपयोग करें। आपके द्वारा मॉनिटर की जाने वाली फ़ाइलों की संख्या पर एक सिस्टम सीमा का सामना करना असामान्य नहीं है। उदाहरण के लिए, उबंटू ल्यूसिड (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

यदि सुनने में शिकायत रहती है तो आपको अधिकतम_करहित_केव और अधिकतम_उपयोगकर्ता के मूल्यों पर भी ध्यान देने की आवश्यकता हो सकती है।

स्रोत: https://github.com/guard/listen/wiki/Inc बढ़ते-the-amount-of-inotify-watchers


3

आप मौजूदा सीमा की जांच कर सकते हैं और उसके आधार पर आप अपनी आवश्यकता के अनुसार इसे बदल सकते हैं

To Check : cat /proc/sys/fs/inotify/max_user_watches To Alter : sudo sysctl fs.inotify.max_user_watches=524288

यह त्रुटि को हल करेगा।

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