4096 (उबंटू) की पिछली फ़ाइल सीमा को बढ़ा नहीं सकता


34

मैं उबंटू 17.04 पर हूं। खुली फ़ाइल सीमा बढ़ाने की कोशिश कर रहा है, और जो भी निर्देश मुझे ऑनलाइन मिले हैं उनमें से कोई भी काम नहीं कर रहा है। मैं 4096 तक जा सकता हूं, लेकिन इससे आगे नहीं जा सकता।

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096

यह काम करता है। यह नहीं है:

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

यह कठिन सीमा के कारण प्रतीत होता है:

$ ulimit -Hn
4096

मैंने इन पंक्तियों को /etc/security/limits.conf में जोड़ने का प्रयास किया है:

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535

इस लाइन को /etc/pam.d/common-session और /etc/pam.d/common-session-noninteractive पर भी जोड़ा गया:

session required pam_limits.so

ऐसा करने के बाद से, मैंने अपना कंप्यूटर रीबूट कर लिया है। सीमा में परिवर्तन। कुछ भी प्रभावित नहीं करता है। कठिन सीमा अभी भी 4096 पर अटकी हुई है, मुझे किसी भी उच्च स्तर पर जाने से रोक रही है। मैं अपनी खुली फ़ाइलों की सीमा कैसे बढ़ाऊं?


यहां कुछ अतिरिक्त कॉन्फ़िगरेशन जानकारी दी गई है:

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

जवाबों:


56

ठीक है, मैं अंत में यह पता लगा। मैं /etc/security/limits.conf में जो सीमाएँ निर्धारित कर रहा था, उन्हें लागू किया जा रहा था, लेकिन उन्हें ग्राफ़िकल लॉगिन पर लागू नहीं किया जा रहा था। इसे टर्मिनल विंडो से इस तरह सत्यापित किया जा सकता है:

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535

अधिक शोध मुझे इस बग रिपोर्ट की ओर ले गए, जिसने मुझे सही दिशा में इशारा किया। लॉगिन शेल द्वारा उपयोग की जाने वाली सीमा को संशोधित करने के लिए, हमें निम्नलिखित पंक्ति को /etc/systemd/user.conf पर जोड़ना होगा:

DefaultLimitNOFILE=65535

यह परिवर्तन काम करता है, लेकिन केवल नरम सीमा को प्रभावित करता है। (4096 की हार्ड लिमिट के साथ हमें छाया हुआ छोड़ दिया।) हार्ड लिमिट को भी प्रभावित करने के लिए, हमें उसी बदलाव के साथ /etc/systemd/system.conf को संशोधित करना होगा।

मेरे द्वारा /etc/pam.d में किए गए परिवर्तन आवश्यक नहीं थे। कम से कम उबंटू पर, यह पहले से ही काम कर रहा है। इसके अलावा, इसके लिए rootऔर *सीमा में सेटिंग्स को बदलना आवश्यक नहीं था ।conf। mkasbergकम से कम मेरे उपयोग के मामले के लिए सीमा बदलना पर्याप्त था।


संक्षेप में

यदि आप द्वारा दर्शाई गई सीमा को बढ़ाना चाहते हैं ulimit -n, तो आपको यह करना चाहिए:

  • निम्नलिखित पंक्ति के साथ /etc/systemd/user.conf और /etc/systemd/system.conf संशोधित करें (यह आलेखीय लॉगिन का ध्यान रखता है):

    DefaultLimitNOFILE=65535
    
  • निम्नलिखित पंक्तियों के साथ /etc/security/limits.conf संशोधित करें (यह गैर-जीयूआई लॉगिन का ध्यान रखता है):

    mkasberg hard nofile 65535
    mkasberg soft nofile 65535
    
  • परिवर्तनों को प्रभावी करने के लिए अपने कंप्यूटर को रिबूट करें।


2
DefaultLimitNOFILE=65535चाल चली। लेकिन /etc/security/limits.conf काम क्यों नहीं करता है?
सुविटरुफ़ का कहना है कि मोनिका

6
GUI लॉगिन सिस्टमड का उपयोग करता है, जिसका जाहिर है कि इसका स्वयं का कॉन्फ़िगरेशन ( /etc/systemd/system.conf) है जो टर्मिनल सत्रों के लिए सामान्य कॉन्फ़िगरेशन से स्वतंत्र है ( /etc/security/limits.conf)। मुझे यह जानने के लिए सिस्टमड के बारे में पर्याप्त जानकारी नहीं है कि इसे इस तरह क्यों लागू किया गया।
मकासबर्ग

1
@Suvitruf क्योंकि यह एक में नजरअंदाज कर दिया है systemd प्रणाली। मैं एक उत्तर पोस्ट कर रहा हूं।
मार्क.2377

1
केवल यह इंगित करना चाहते हैं कि rootउपयोगकर्ता के लिए सीमाएं *समूह द्वारा निर्दिष्ट या निर्दिष्ट नहीं की जा सकती हैं । rootशाब्दिक रूप से स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए।
पेट्र जवोरिक

2
यह मेरे लिए काम करता है, एक रिबूट के बाद ।
शिहे जांग

14

/etc/security/limits.confफ़ाइल में कुछ भी बदलने की आवश्यकता नहीं है , यह अनदेखा है यदि आप सिस्टमड का उपयोग कर रहे हैं।

( नेटवर्क पर एक अन्य प्रश्न का संशोधित उत्तर पुन: प्रस्तुत करना ...)

उन लोगों के लिए एक विकल्प जो डिफ़ॉल्ट /etc/systemd/system.confऔर /etc/systemd/user/confफ़ाइलों को संपादित नहीं करना चाहते हैं :

  1. /etc/systemd/system.conf.d/limits.confइन सामग्रियों के साथ एक नई फ़ाइल बनाएँ :

    [Manager]
    DefaultLimitNOFILE=65535
    
  2. systemctl daemon-reexecजड़ के रूप में चलाएं

  3. लॉगआउट करें और फिर से लॉगिन करें

  4. के साथ अपनी नई सीमा की जाँच करें ulimit -n

विवरण के लिए systemd-system.confमैनपेज देखें।


मेरे उबंटू 18.10 सिस्टम पर प्रश्न में फाइल चालू है /etc/systemd/system.conf। वहाँ बदलाव करते हुए प्रतीत होता है कि चाल चली गई है, धन्यवाद।
स्टीफन कैनेडी

1
मेरे लिए बस लॉग आउट करने से काम नहीं हुआ (Ubuntu 18.04) लेकिन फिर से शुरू करने से काम चल गया। बहुत सुंदर समाधान, धन्यवाद।
stann1

0

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

user@paresh.com:~$ ulimit -Hn
4096

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

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

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

user hard nofile 9999

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

user@paresh.com:~$ ulimit -Hn
9999

मुझे उम्मीद है कि यह आपके लिए भी काम करेगा।


0
  1. /etc/systemd/system/sonar.service संपादित करें

  2. सेवा के तहत इन दोनों लाइन को जोड़ें

[सर्विस]

LimitMEMLOCK = अनंत

LimitNOFILE = 65535

  1. systemctl डेमॉन-रीलोड
  2. systemctl पुनः आरंभ सोनार

यह मेरे लिए काम करता है।


0

टीएल; डीआर मुझे जवाबों पर ध्यान केंद्रित करने की आवश्यकता महसूस हुई, इसलिए वे खोजने में आसान हैं। मुझे सही ढंग से काम करने के लिए सभी टुकड़ों को एक साथ पाने के लिए उम्र ...

2 स्थानों पर विचार किया जाना है।

  1. जीयूआई सत्र

    $ grep DefaultLimitNOFILE /etc/systemd/system.conf
    DefaultLimitNOFILE=65535
    

    या यहाँ बेहतर:

    $ grep NOFILE /etc/systemd/system.conf.d/limits.conf
    DefaultLimitNOFILE=65535
    
  2. खोल का वातावरण

    $ grep nofile /etc/security/limits.conf
    user soft nofile 65535
    user hard nofile 65535`
    

    या यहाँ बेहतर:

    $ grep nofile /etc/security/limits.d/user.conf
    user soft nofile 65535
    user hard nofile 65535
    
  3. उपरोक्त फ़ाइलों में सेटिंग्स को बदलने के बाद, रीबूट करें और फिर इसके साथ सीमाएं जांचें: ulimit -n -Hn -Sn

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