ulimit PICKLE: "ऑपरेशन की अनुमति नहीं है" और "आदेश नहीं मिला"


15

मैं वर्तमान उपयोगकर्ता के लिए खुली फ़ाइलों की अधिकतम संख्या बढ़ाने की कोशिश कर रहा हूं

> ulimit -n
1024

मैं निम्नानुसार वृद्धि और असफल होने का प्रयास करता हूं

> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted

इसलिए मैं प्राकृतिक काम करता हूं और अस्थायी अनुमति के साथ चलने की कोशिश करता हूं, लेकिन असफल रहता हूं

> sudo ulimit -n 4096
sudo: ulimit: command not found

प्रशन

  1. कैसे बढ़ाएं अल्सर?
  2. ये क्यों हो रहा है?

फेडोरा 14 का उपयोग करना


हटाए गए टिप्पणी के लिए प्रतिक्रिया: ulimit 4096काम नहीं करता है। मुझे लगता -nहै कि सही है। अवधारणा के प्रमाण के रूप में यह काम करता है यदि मैं पहले sudo su - root(लेकिन केवल रूट के लिए बदलता है)।
paislee


जवाबों:


17

ulimitएक शेल इन-बिल्ट है, बाहरी कमांड नहीं है। इसे बनाने की आवश्यकता है क्योंकि यह शेल प्रक्रिया पर ही कार्य करता है, जैसे cd: वर्तमान निर्देशिका की तरह सीमाएं, उस विशेष प्रक्रिया की एक संपत्ति हैं।

sudo bash -c 'ulimit -n 4096'काम करेगा, लेकिन यह sudoकेवल द्वारा लागू बैश प्रक्रिया की सीमा को बदल देगा , जो आपकी मदद नहीं करेगा।

प्रत्येक सीमा के लिए दो मूल्य हैं: कठिन सीमा और नरम सीमा। केवल जड़ ही कठोर सीमा को बढ़ा सकती है; कोई भी कठिन सीमा को कम कर सकता है, और नरम सीमा को केवल दिशा के साथ किसी भी दिशा में संशोधित किया जा सकता है कि यह कठोर सीमा से अधिक नहीं हो सकता है। नरम सीमा वास्तविक मूल्य है जो मायने रखती है।

इसलिए आपको यह व्यवस्था करने की आवश्यकता है कि आपकी सभी प्रक्रियाओं में कम से कम 4096 की खुली फ़ाइलों के लिए एक कठिन सीमा है। आप नरम सीमा को 1024 पर रख सकते हैं। उस प्रक्रिया को लॉन्च करने से पहले जिसमें बहुत सारी फ़ाइलों की आवश्यकता होती है, नरम सीमा बढ़ाएं। में /etc/security/limits.conf, लाइनें जोड़ें

paislee hard nofile 4096
paislee soft nofile 1024

paisleeउस उपयोगकर्ता का नाम जहां आप अपनी प्रक्रिया को चलाना चाहते हैं। उस शेल में जो उस प्रक्रिया को लॉन्च करता है जिसके लिए आप एक उच्च सीमा चाहते हैं, चलाएं

ulimit -Sn unlimited

नरम सीमा को कठोर सीमा तक बढ़ाने के लिए।


1
वैकल्पिक करने के लिए sudo bash -cकर रहे हैं sudo -iजो एक लॉगिन खोल शुरू होता है और sudo -swhcih एक खोल शुरू होता है। वही सीमाएँ लागू होती हैं लेकिन यह अन्य परिस्थितियों में उपयोगी हो सकती है।
ब्रैम

धन्यवाद। क्या मैं कुछ संबंधित प्रश्न पूछ सकता हूं? अन्य उत्तर और पोस्ट stackoverflow.com/a/17483998/156458 और unix.stackexchange.com/a/238413/674 और unix.stackexchange.com/a/169035/674 सभी अनुशंसित उपयोग कर रहे हैं sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"। लेकिन दोनों केवल ulimit -c 1024और exec su $LOGNAME"केवल बनाए गए शेल को प्रभावित करते हैं sudo, तो कमांड का उद्देश्य क्या है? exec su $LOGNAME"परिवर्तित सीमा का उपयोग करने के लिए कुछ भी सार्थक नहीं करता है। अगर मैं कुछ याद कर रहा हूं तो मैं बहुत भ्रमित और आश्चर्यचकित हूं।
टिम

कृपया ध्यान दें कि ulimit -Sn unlimitedअधिकांश गोले पर काम नहीं करता है। सही तरीका है कॉल करना ulimit -aऔर फिर कॉल करना ulimit -n <number>जहां <नंबर हार्ड लिमिट (राइट कॉलम) है।
विद्वान

3

फ़ाइल खोलें /etc/security/limits.confऔर लाइन जोड़ें <user> soft nofile <value>ulimitरूट उपयोगकर्ता में परिवर्तन का उपयोग करने और उसी के लिए प्रयास करें।

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