Wie erhöht man richtig ein `ulimit -n` Limits?

Ich versuche, die X-Plane 10-Demo über uTorrent herunterzuladen, erhalte jedoch die ganze Zeit die Fehlermeldung „zu viele offene Dateien“. Ich kann den alternativen Download durchführen (der ewig und einen Tag dauert), aber ich frage mich, wie ich die Einstellung in Lion erhöhen kann.

Ich habe widersprüchliche Informationen darüber gefunden, einige sagen, dass ulimit -nund sysctldie Werkzeuge der Wahl sind, während andere berichten, dass dies launchctlrichtig ist.

Der gemeldete Wert für ulimit -nist 256, dasselbe für launchctl limit:

cpu         unlimited      unlimited      
filesize    unlimited      unlimited      
data        unlimited      unlimited      
stack       8388608        67104768       
core        0              unlimited      
rss         unlimited      unlimited      
memlock     unlimited      unlimited      
maxproc     709            1064           
maxfiles    256            unlimited      

Antworten (3)

Die folgenden Lösungen sollten die meisten Lösungen lösen (und sind in der Reihenfolge ihrer Hierarchie aufgelistet):

echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile

Anmerkungen:

  1. Sie müssen neu starten, damit diese Änderungen wirksam werden.
  2. AFAIK Sie können unter OS X keine Grenzen mehr auf "unbegrenzt" setzen
  3. launchctl maxfiles sind durch sysctl maxfiles begrenzt und können diese daher nicht überschreiten
  4. sysctl scheint kern.maxfilesperproc von launchctl maxfiles zu erben
  5. ulimit scheint standardmäßig den Wert "Dateien öffnen" von launchctl zu erben
  6. Sie können ein benutzerdefiniertes ulimit in /etc/profile oder ~/.profile festlegen; Obwohl dies nicht erforderlich ist, habe ich ein Beispiel bereitgestellt
  7. Seien Sie vorsichtig, wenn Sie einen dieser Werte im Vergleich zu ihrem Standardwert auf eine sehr hohe Zahl setzen - die Funktionen existieren Stabilität/Sicherheit. Ich habe diese Beispielnummern genommen, die ich für vernünftig halte und die auf anderen Websites geschrieben wurden.
  8. Wenn Launchctl-Limits niedriger sind als die Sysctl-Limits, wurde berichtet, dass die relevanten Sysctl-Limits automatisch erhöht werden, um die Anforderungen zu erfüllen.
ein Jahrzehnt später ... neuere m1-Macs haben einen anderen maxproc ulimit -Sa, um alle Werte vor der Einstellung anzuzeigen. Dateideskriptoren sind jedoch immer noch sehr niedrig bei 256

Steuert im Wesentlichen ulimitdie Ressourcen, die der Shell und ihren Prozessen zur Verfügung stehen, wobei launchctldie maximalen Ressourcen für das System und seine Prozesse gesteuert werden.

Für die aktuelle Shell kann das Limit der maximal geöffneten Dateien geändert werden durch: ulimit -n 10240.

Hinweis: Sie können zusätzliche -SParameter für ein weiches oder -Hfür das harte Limit verwenden.

Wenn das Shell-Limit nicht geändert werden kann, müssen Sie launchctlzuerst den Befehl verwenden, z

sudo launchctl limit maxfiles 10240 unlimited

Um die Kernel-Limits zu ändern, führen Sie Folgendes aus: sudo sysctl -w kern.maxfiles=10240.

Weiterlesen:

Sie können die maximal geöffneten Dateien erhöhen, indem Sie ulimit -n 1024uTorrent über die Befehlszeile ausführen und starten. In meinem Fall würde ich Transmission mit dem Befehl starten:

/Applications/Transmission.app/Contents/MacOS/Transmission

Sie müssen die Torrent-Anwendung von der Shell aus starten, in der Sie ulimit aufgerufen haben. Andernfalls haben Ihre Änderungen keine Auswirkungen. Nun, die Änderungen zu isolieren, ist der Vorteil von ulimit.

Das scheint nicht zu helfen, selbst wenn das Maximum von ulimit -n gesetzt werden darf (10240) bekomme ich den gleichen Fehler :(
aber wie ändere ich den ulimitWert für die Maschine für den nächsten Neustart?