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
नरम सीमा को कठोर सीमा तक बढ़ाने के लिए।
ulimit 4096
काम नहीं करता है। मुझे लगता-n
है कि सही है। अवधारणा के प्रमाण के रूप में यह काम करता है यदि मैं पहलेsudo su - root
(लेकिन केवल रूट के लिए बदलता है)।