OSX Yosemite [डुप्लीकेट] में पहले की तरह ओपन फाइल लिमिट काम नहीं करती है


22

मैंने अभी-अभी Mac OS X को Yosemite में अपडेट किया है, और अब कुछ एप्लिकेशन काम नहीं करते (IBM DB2)। मुझे पता है कि मुझे ओपन फाइल्स को 65000 पर सेट करना होगा, हालांकि कमांड काम नहीं करता है।

Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument

ऐसा क्यों हो रहा है और मैं समस्या को कैसे ठीक कर सकता हूं?

जवाबों:


25

ऐसा लगता है कि ओएस एक्स के प्रत्येक संस्करण के लिए खुली फ़ाइलों की सीमा को बदलने के लिए एक पूरी तरह से अलग विधि है!

ओएस एक्स सिएरा (10.12.X) के लिए आपको निम्न करने की आवश्यकता है:

  1. में /Library/LaunchDaemonsनाम की एक फ़ाइल बनाने limit.maxfiles.plistऔर में निम्नलिखित (दो संख्याओं, जो नरम और कठिन सीमा नहीं है परिवर्तित करने के लिए स्वतंत्र लग रहा है क्रमशः) पेस्ट करें:

    <?xml version="1.0" encoding="UTF-8"?>  
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  
              "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">  
        <dict>
          <key>Label</key>
          <string>limit.maxfiles</string>
          <key>ProgramArguments</key>
          <array>
            <string>launchctl</string>
            <string>limit</string>
            <string>maxfiles</string>
            <string>64000</string>
            <string>524288</string>
          </array>
          <key>RunAtLoad</key>
          <true/>
          <key>ServiceIPC</key>
          <false/>
        </dict>
      </plist> 
    
  2. अपनी नई फ़ाइल के स्वामी को बदलें:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
    
  3. इन नई सेटिंग्स को लोड करें:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
    
  4. अंत में, जाँच लें कि सीमाएँ सही हैं:

    launchctl limit maxfiles
    

7
MacOS 10.13 के लिए एक नए उत्तर की प्रतीक्षा कर रहा है! :)
NSTJ

1
दोबारा शुरू होने तक प्रक्रिया मेरे काम नहीं आई। धन्यवाद! इसने वास्तव में बहुत मदद की
user2773086

यह जिस्ट भी कहता है कि इन फाइलों को संशोधित करना सिएरा जिस्ट के
डेविन-रोड

1
काम करने के लिए सीमा आवश्यक है (भले ही चरण # 4 अद्यतन मूल्यों को दिखाता है)
त्रिकोणीय

21

मैं देख रहा हूं कि आपने यह सवाल पूछा है।

एक कर्नेल सीमा है जो आपको निपटानी है, kern.maxfiles, जो कर्नेल सीमा है और ulimit सेट करते समय इसे पार नहीं किया जा सकता है।

क्रिश्टमैक्स का उपयोग कैसे करें के बारे में वर्णन के लिए मैक ओएस एक्स में क्रिप्टेड ब्लॉग पेज अधिकतम फाइलें देखें ।

मैंने अभी तक अपने मैक पर योसेमाइट लोड नहीं किया है। sysctl -w kern.maxfiles=65000मावेरिक्स, जो एक ही kern.maxfiles = डिफ़ॉल्ट रूप से 12288 सीमा होती है पर काम करता है।

मैंने अपने वीएम ओएस एक्स 10.6.8 पर जांच की और इसमें वही सीमा थी जो यह सवाल करती है कि यह आपके ओएस संस्करण से पहले कैसे काम कर रहा था।

एक स्लाइड शेयर है ( मैक ओएस एक्स के लिए डीबी 2 मैक ओएस एक्स के लिए डीबी 2 स्थापित और स्थापित करना ), डीबी 2 का उपयोग करने के लिए अनुशंसित सीमाएं दिखाते हुए, सिस्टम पैरामीटर पृष्ठ 7 बढ़ाएं देखें ।

सिस्टम पैरामीटर बढ़ाएँ

/Etc/sysctl.conf खोलें (या इसे बनाएं यदि यह पहले से मौजूद नहीं है) और निम्नलिखित सेटिंग्स डालें। ये सेटिंग्स साझा मेमोरी और उपयोगकर्ता सीमा के लिए कुछ सेटिंग्स बढ़ाती हैं जो डीबी 2 को मैक पर काम करने के लिए चाहिए।

निम्नलिखित को /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
ern.sysv.shmseg = 32
kern.sysv.shmall = 117988ernern.ernm से
जोड़ें।
kern.maxfiles = 65536

ऐसा लगता है कि /etc/sysctl.confआपने अपग्रेड करते समय अपनी फ़ाइल खो दी है ।


दरअसल, मैंने लंबे समय पहले डीबी 2 स्थापित किया था और इसने काम किया। फिर मैंने पिछले साल Maverick को अपडेट किया, बिना किसी समस्या के। और आज, मैंने योसेमाइट को अपडेट किया और यह समस्या दिखाई देती है। मैं अपना पहले से स्थापित DB2 शुरू नहीं कर सकता।
अंगोका

एक और बात यह है कि मेरी sysctl.conf आपके द्वारा अपनी पोस्ट में डाली गई फ़ाइल के समान है। मैंने पहली बार डीबी 2 (एक साल पहले) स्थापित किया, लेकिन मैंने इसे माइग्रेशन के लिए नहीं छुआ।
अंगोका

: समस्या यह है कि फाइल में कुछ blankspaces था ibm.com/developerworks/community/forums/html/...
AngocA

1
रिक्त स्थान, जो सोचा होगा। माना जाता है कि Apple दुनिया के कुछ बेहतरीन प्रोग्रामर हैं।
user187561

@ user187561 sysctl(8)BSD से आता है।
ड्रू स्टीफंस

12

Mac OS 10.10 में ऐसा लगता है कि ulimit सेटिंग लॉन्चर की सीमा सेटिंग से अधिक नहीं हो सकती है।

इसलिए आपको वर्तमान सेटिंग प्राप्त करने के लिए पहले टर्मिनल में लॉन्चिंग की सीमा को अधिकतम करना चाहिए :

launchctl limit maxfiles
maxfiles    256            unlimited 

तो मेरे मामले में सॉफ्ट लिमिट 256 है, हार्ड लिमिट अनलिमिटेड है। और फिर अगर मैं 512 तक सॉफ्ट लिमिट सेट करना चाहता हूं:

sudo launchctl limit maxfiles 512 unlimited

सेटिंग सीमा के लिए लॉन्चर का विस्तृत उपयोग यहां पाया जा सकता है: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html


2015-09-30 को योसमाइट 10.10.5 पर मेरी (सॉफ्ट, हार्ड) सीमाएं (512,10240) सेट करने के लिए 'लॉन्चर लिमिट मैक्सफाइल्स 512 अनलिमिटेड' प्रतीत होता है
डेव एक्स

2
"लॉन्चक्टल लिमिट मैक्सफाइल्स अनलिमिटेड, लॉन्चिंग लिमिट लिमिट मैक्सफाइल्स" इंगित करता है कि 10240 सबसे बड़ी सीमा है जिसे दर्ज किया जा सकता है। बड़ी संख्या का उपयोग करना चुपचाप विफल रहता है, सेटिंग को पहले की तरह छोड़ देना।
डेव एक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.