शेल में, ulimit "शेल के लिए उपलब्ध संसाधनों पर नियंत्रण और इसके द्वारा शुरू की गई प्रक्रियाओं पर नियंत्रण प्रदान करता है" (देखें man bash
)। इसलिए, यह केवल शेल और उसके बच्चों पर लागू होता है। लॉन्चड की सीमाएँ इससे संबंधित हैं और प्रक्रियाएँ जो इसे प्रबंधित करती हैं। दोनों अलग हैं।
व्यक्तिगत कार्यक्रम मानक सी लाइब्रेरी रूटीन ulimit()
या getrlimit()
और कॉल करके अपनी स्वयं की संसाधन सीमाएँ निर्धारित कर सकते हैं setrlimit()
। जब तक प्रक्रिया सुपर-उपयोगकर्ता के रूप में चल रही है तब तक कुछ संसाधन सीमाएँ उन्नत नहीं की जा सकती हैं।
एक व्यावहारिक उदाहरण के रूप में, मैं बड़ी सॉफ्टवेयर परियोजनाओं को डीबग करता हूं और खुली फाइलों की संख्या के लिए शेल की डिफ़ॉल्ट सीमा पर्याप्त बड़ी नहीं है। मेरी .bashrc फ़ाइल में, मेरे पास निम्नलिखित हैं:
# Increase the upper limit on the number of open files:
ulimit -n 1024
अब मेरे डिबगर को यह शिकायत नहीं होगी कि वह अपनी ज़रूरत की सभी फाइलें नहीं खोल सकता। जाहिर है, यह लॉन्च पर कोई प्रभाव नहीं होना चाहिए।