Das Limit für offene Dateien funktioniert in OSX Yosemite nicht wie zuvor

42505
AngocA

Ich habe gerade Mac OS X auf Yosemite aktualisiert, und jetzt funktionieren einige Anwendungen nicht (IBM DB2). Ich weiß, dass ich Open Files auf 65000 setzen muss, der Befehl funktioniert jedoch nicht.

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

Warum passiert das und wie kann ich das Problem beheben?

20

3 Antworten auf die Frage

22
ninjaPixel

Es scheint, als gäbe es eine völlig andere Methode, um das Limit für offene Dateien für jede Version von OS X zu ändern!

Für OS X Sierra (10.12.X) müssen Sie:

  1. In /Library/LaunchDaemonseine Datei mit dem Namen limit.maxfiles.plistund fügen Sie den folgenden in (, können Sie die beiden Zahlen zu ändern, die die weichen und harten Grenzen sind, respectively):

    <?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. Ändern Sie den Besitzer Ihrer neuen Datei:

    sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist 
  3. Laden Sie diese neuen Einstellungen:

    sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist 
  4. Überprüfen Sie abschließend, ob die Grenzwerte korrekt sind:

    launchctl limit maxfiles 
Wir freuen uns auf eine neue Antwort für macOS 10.13! :) NSTJ vor 7 Jahren 4
Der Prozess hat für mich nicht funktioniert, bis ich neu gestartet habe. Vielen Dank! es hat wirklich sehr geholfen user2773086 vor 6 Jahren 1
Dieser Hauptteil sagt auch, dass das Ändern dieser Dateien der Weg ist, um dieses offene Dateilimit für Sierra https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c zu aktualisieren Devin G Rhode vor 6 Jahren 0
Ein Neustart ist erforderlich, damit die Grenzwerte funktionieren (auch wenn in Schritt 4 die aktualisierten Werte angezeigt werden). trinth vor 5 Jahren 1
19
user187561

Ich sehe, Sie haben diese Frage überall gestellt.

Es gibt ein Kernel-Limit, mit dem Sie umgehen müssen, kern.maxfiles. Dies ist das Kernel-Limit, das bei der Einstellung von ulimit nicht überschritten werden kann.

Auf der Krypted-Blogseite Maximum Files in Mac OS X finden Sie eine Beschreibung zum Bearbeiten von kern.maxifiles mit sysctl.

Ich habe Yosemite noch nicht auf meinem Mac geladen. Das sysctl -w kern.maxfiles=65000funktioniert auf Mavericks, die standardmäßig das gleiche kern.maxfiles = 12288-Limit haben.

Ich habe mein VM OS X 10.6.8 überprüft und hatte das gleiche Limit, was die Frage aufwirft, wie es vor Ihrer OS X-Version funktionierte.

Es gibt eine Folienfreigabe ( DB2 für Mac OS X, die DB2 für Mac OS X installiert und einrichtet ), in der die empfohlenen Grenzwerte für die Verwendung von DB2 aufgeführt sind (siehe Systemparameter erhöhen, Seite 7).

Erhöhen Sie die Systemparameter

Öffnen Sie /etc/sysctl.conf (oder erstellen Sie es, falls noch nicht vorhanden) und fügen Sie die folgenden Einstellungen ein. Diese Einstellungen erhöhen einige Einstellungen für Shared Memory und Benutzergrenzen, die DB2 benötigt, um unter Mac zu funktionieren.

Fügen Sie /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536 hinzu
kern.maxfiles = 65536

Es klingt, als hätten Sie Ihre /etc/sysctl.confDatei beim Upgrade verloren.

Eigentlich habe ich DB2 vor langer Zeit installiert und es hat funktioniert. Dann bin ich letztes Jahr ohne Probleme auf Maverick umgestiegen. Und heute habe ich auf Yosemite aktualisiert und dieses Problem erscheint. Ich kann mein bereits installiertes DB2 nicht starten. AngocA vor 9 Jahren 0
Eine andere Sache ist, dass meine sysctl.conf mit der Datei identisch ist, die Sie in Ihren Post einfügen. Ich habe das erste Mal erstellt, dass ich DB2 (vor einem Jahr) installiert habe, habe es aber bei der Migration nicht berührt. AngocA vor 9 Jahren 0
Das Problem waren einige Leerzeichen in dieser Datei: https://www.ibm.com/developerworks/community/forums/html/topic?id=0597855f-0a90-46aa-be02-9fae4e93232f AngocA vor 9 Jahren 0
Nachgestellte Räume, wer hätte gedacht. Apple soll einige der besten Programmierer der Welt haben. user187561 vor 9 Jahren 1
@ user187561 `sysctl (8)` stammt von BSD. Drew Stephens vor 7 Jahren 0
Und es ist voll mit Änderungen von Apple. user187561 vor 7 Jahren 0
Das hat mich gerettet !! Ich arbeite derzeit mit meinem Mac auf El Capitan. Vielen Dank! Eric Olson vor 6 Jahren 0
12
imadcat

Unter Mac OS 10.10 scheint die Einstellung von ulimit die Einstellung von launchctl limit nicht zu überschreiten.

Sie sollten also zunächst launchctl limit maxfiles im Terminal ausführen, um die aktuelle Einstellung zu erhalten:

launchctl limit maxfiles maxfiles 256 unlimited  

In meinem Fall ist das Softlimit 256, das Hardlimit ist unbegrenzt. Und dann, wenn ich die weiche Grenze auf 512 setzen möchte:

sudo launchctl limit maxfiles 512 unlimited 

Eine ausführliche Verwendung von launchctl zum Einstellen von Grenzwerten finden Sie hier: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html

'launchctl limit maxfiles 512 unlimited' scheint meine Grenzen (weich, hart) auf Yosemite 10.10.5 (2015-09-30) auf (512,10240) festzulegen Dave X vor 8 Jahren 0
"launchctl limit maxfiles unbegrenzt unbegrenzt; launchctl limit maxfiles" gibt an, dass 10240 der größte eingegebene Grenzwert ist. Die Verwendung größerer Zahlen schlägt im Hintergrund fehl und belässt die Einstellung wie zuvor. Dave X vor 8 Jahren 2