कुंआ..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
ulimit
ऐसे बर्बर तरीके से मेरा अपमान क्यों करता है?
कुंआ..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
ulimit
ऐसे बर्बर तरीके से मेरा अपमान क्यों करता है?
जवाबों:
ulimit
खोल / प्रक्रिया विशिष्ट है। छोड़ें sudo
।
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
कि पास होने पर कोई त्रुटि नहीं दी ulimit
; आमतौर पर इसे एक बाहरी बाइनरी की आवश्यकता होती है, लेकिन ulimit
एक शेल बिलिन है।
which ulimit
। इसके बारे में कुछ भी आश्चर्यजनक नहीं है।
डैनियल बेक का जवाब सभी सच नहीं बताता (वास्तव में यह थोड़े से हाथ की नींद है), और वास्तव में "सूदो अलिमित" करने के लिए लोगों की ज़रूरत में मदद नहीं करता है।
समस्या यह है कि
डैनियल का उदाहरण केवल एक बहुत ही विशिष्ट स्थिति में काम करता है (जो सौभाग्य से डिफ़ॉल्ट है)।
counterexample:
$ ulimit -s 8191 # set both hard and soft limits
$ ulimit -s # show current soft limit
8191
$ ulimit -s 16384 # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
तो, आप के साथ सीमा निर्धारित करते हैं ulimit -s
, और वह चला गया और नरम और कठोर दोनों सीमाएं निर्धारित करता है। अब आप इसे उच्चतर सेट करने से रोक रहे हैं।
इस बिंदु पर आप कोशिश करने के लिए सोच सकते हैं sudo
; लेकिन यह काम नहीं करेगा, क्योंकि डैनियल ने क्या लिखा है।
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
यहाँ क्या हुआ कि sudo
एक नया शेल शुरू किया, जहां यह चला ulimit
; और THAT शेल में, नया ulimit सेट किया गया था। लेकिन फिर उस शेल ने अपना काम खत्म कर दिया, फटा हुआ था, और अब आप अपने पिछले शेल में अपने पिछले एलिमिट के साथ वापस आ गए हैं।
सबूत:
$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s # It worked!
16384
# exit
exit
$ ulimit -s # ... but now we're back to the old ulimit.
8191
$
तो आखिर डैनियल का उदाहरण काम क्यों करता है? Ulimit की डिफ़ॉल्ट हार्ड और सॉफ्ट लिमिट के कारण, वह सॉफ्ट लिमिट को हार्ड पर पुश कर सकता था। हम इसे चाल दिखाने के लिए धीमी गति से कर सकते हैं:
$ ulimit -Ss # show the Soft limit
8192
$ ulimit -Hs # show the Hard limit
65532
$ ulimit -s # by default, shows the Soft limit
8192
$ ulimit -s 16384 # set both the Soft and Hard limit
$ ulimit -s # shows the Soft limit
16384
$ ulimit -Hs # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385 # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$
संक्षेप में: यदि आप अपनी कठिन सीमा निर्धारित करते हैं और इसे आगे बढ़ाना चाहते हैं, तो आप उस शेल में भाग्य से बाहर हैं , ... जब तक कि आप सुपरयुजर के रूप में नहीं रहते या बाद में विशेषाधिकारों को छोड़ने के लिए कुछ झुकाव का उपयोग नहीं करते।
cd
।