यह गैर-रूट उपयोगकर्ता के लिए 4096 अधिकतम खुली फाइलें क्यों नहीं प्राप्त कर सकता है?


13

मैं nofileइस समस्या से संबंधित प्रत्येक StackExchange उत्तर का पालन करने के बावजूद, Ubuntu 14.04 पर गैर-रूट उपयोगकर्ताओं के लिए सीमा को बढ़ा नहीं सकता । अब तक मेरे पास:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

रिबूट, लॉग इन और:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

वहाँ अभी भी किसी भी तरह गैर-रूट उपयोगकर्ताओं के लिए 4096 अधिकतम की सीमा लगती है।


मैं उबंटू 16.10 डेस्कटॉप पर ठीक यही मुद्दा रख रहा हूं । कोई फर्क नहीं पड़ता कि मैं क्या करने की कोशिश, सीमा या तो कर रहे हैं 1024 या 4096.
NathanAldenSr

जवाबों:


13

14.04 उबंटू के उपयोग से मुझे वर्णित कठिन सीमा मिल गई:

user@notebook:~$ ulimit -Hn 4096  

मैं इसे अलिमित का उपयोग करके कम कर सकता था, लेकिन इसे नहीं बढ़ाता, जैसा कि सवाल यह बताता है। जैसा कि ulimit का मैनुअल वर्णन करता है:

केवल जड़ कठिन सीमा को बढ़ा सकती है

तो मैंने /etc/security/limits.confइस तरह से एक उच्च सीमा निर्धारित करने की कोशिश की :

user hard nofile 9999 

और जैसे एक नए लॉगिन ssh localhost -l userने मुझे नई सीमा दी:

user@notebook:~$ ulimit -Hn 9999

आशा है कि यह आपके लिए भी काम करेगा।


धन्यवाद TomTomTom मेरे पास /etc/security/limits.d/custom.conf में पहले से ही ऐसा बदलाव है। जैसा कि आपने सुझाव दिया, मैंने इसे सीधे /etc/security/limits.conf में डालने का प्रयास किया और मुझे अभी भी "बैश: अलिमित: खुली हुई फाइलें: सीमा को संशोधित नहीं किया जा सकता: ऑपरेशन की अनुमति नहीं है"।
कैफीन कोमा

मैं - सिर्फ अनुमान लगाता हूं - दो कारणों में से एक, यह आपके लिए काम क्यों नहीं करता है:
टॉमटॉम

1
अधूरी टिप्पणी को संपादित करने के लिए मुझे बहुत लंबा समय लगा। यहाँ हम चलते हैं: मैं - बस अनुमान लगाता हूं - दो कारणों में से एक, यह आपके लिए काम क्यों नहीं करता है: 1. /etc/security/limits*आपके लॉगिन तंत्र द्वारा पढ़ा नहीं जाता है - अभी तक अज्ञात कारण से। 2. आपकी कठोर सीमा कहीं और 4096 पर सेट हो जाती है, और "केवल जड़ बढ़ सकती है ..."। आप अपने प्रोफाइल .bashrc( जैसे आपके शेल के आधार पर) की जाँच कर सकते हैं, या आप /etcअन्य स्थानों के लिए जाँच कर सकते हैं, जहाँ सीमाएँ निर्धारित की जा सकती हैं, जैसे find /etc | grep -e ulimit -e 4096 -e nofile। BTW: आप ssh की कोशिश की? और: क्या आप /etc/ssh/sshd.confकिसी कारण से PAM से बचने के लिए बदल गए हैं?
टॉमटॉम टॉम

हाँ- सभी लॉगिन ssh के माध्यम से है। मैंने UsePAM को अक्षम कर दिया है- कई गाइड इसे केवल ssh-key आधारित लॉगिन की अनुमति देने के भाग के रूप में सुझाते हैं। मैं इसे अस्थायी रूप से चालू करने की कोशिश करूंगा, बस यह देखने के लिए कि क्या समस्या है। धन्यवाद!
कैफीन कोमा

अफिक, पीएएम वह है जिसे पढ़ना चाहिए /etc/security/limits*- आप पीएएम को इसके लिए जांचने में सक्षम करने का प्रयास कर सकते हैं। मैं PAM को यह देखने के लिए अक्षम करने का प्रयास करूंगा कि इससे क्या फर्क पड़ता है और परिणाम रिपोर्ट करेगा। --- हाँ! बस! PAM के साथ मेरी सीमा 4096 है, साथ ही, 9999 में पूरी तरह से सेट है /etc/security/limits.conf
टॉमटॉमटोम

4

यह लेख , मुझे लगता है कि आपके मुद्दे को संबोधित करता है।

मूल रूप से आपको उपलब्ध संसाधनों को बढ़ाने के लिए ulimit कमांड का उपयोग करना चाहिए।

उदाहरण के लिए:

अधिक से अधिक खुले फ़ाइल विवरणों को प्रदर्शित करने के लिए निम्नलिखित कमांड कमांड का उपयोग करें:

cat /proc/sys/fs/file-max

कठिन और नरम मूल्यों को देखने के लिए, कमांड निम्नानुसार जारी करें:

# ulimit -Hn
# ulimit -Sn

Httpd या oracle उपयोगकर्ता के लिए हार्ड और सॉफ्ट वैल्यू देखने के लिए, कमांड निम्नानुसार जारी करें:

# su - username

अधिकतम फ़ाइलों की संख्या को ठीक करने के लिए, आप कर्नेल चर / proc / sys / fs / file-max में एक नया मान सेट करके निम्न फ़ाइलों की अधिकतम संख्या बढ़ा सकते हैं (मूल के रूप में लॉगिन):

# sysctl -w fs.file-max=100000

ऊपर आदेश 100000 फ़ाइलों की सीमा को बाध्य करता है। आपको /etc/sysctl.confफ़ाइल को संपादित करने और निम्नलिखित पंक्ति लगाने की आवश्यकता है ताकि रिबूट के बाद सेटिंग वैसी ही बनी रहे जैसी वह है। ऐसा करने के लिए, निम्न के रूप में एक विन्यास निर्देश संलग्न करें:

fs.file-max = 100000

फ़ाइल को सहेजें और बंद करें। उपयोगकर्ताओं को प्रभावी होने के लिए लॉग आउट करने और फिर से लॉग इन करने की आवश्यकता है या केवल निम्न कमांड टाइप करें:

# sysctl -p

कमांड के साथ अपनी सेटिंग्स को सत्यापित करें:

# cat /proc/sys/fs/file-max

या:

# sysctl fs.file-max

उपरोक्त प्रक्रिया सिस्टम-वाइड फ़ाइल डिस्क्रिप्टर (FD) सीमाएँ निर्धारित करती है, हालाँकि आप फ़ाइल को एडिट करके फाइल httpdको विशिष्ट सीमाओं तक सीमित (या किसी अन्य उपयोगकर्ता) को सीमित कर सकते हैं और निम्नानुसार सीमाएँ सेट कर सकते हैं:/etc/security/limits.conf/etc/security/limits.conf

httpd soft nofile 4096
httpd hard nofile 10240

फिर उनके द्वारा जाँच करें:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

यदि आपको अन्य लिनक्स वितरण पर समस्या मिली है, तो जाँच करें /etc/pam.d/loginऔर सुनिश्चित करें कि आप pam_limits.soसक्षम हैं, जैसे

session required pam_limits.so

2
हाय ब्रुक। दुर्भाग्य से, मैंने उस लेख के सुझावों को पहले ही आज़मा लिया है। हालांकि to अलिमित -एचएन ’मेरे लिए नया था; यह 4096 प्रिंट करता है, जिस सीमा को मैं टकराता रहता हूं।
कैफीन कोमा

0

यदि यह एक सेवा है, तो आप सीमा को /etc/systemd/system/{ServiceName}.serviceजोड़ने की कोशिश कर सकते हैंLimitNOFILE=65536


Ubuntu 14.04 डिफ़ॉल्ट रूप से सिस्टमड का उपयोग नहीं कर रहा है।
नंबर 5

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