Welche Befehls- / Konfigurationsdatei steuert die Grenzwerte für geöffnete Dateien unter OS X? Gibt es einen anderen Befehl für OS X 10.5 / 10.6 / 10.7? Die Optionen , die ich unten erforschen sind ulimit
, sysctl
undlaunchctl
"Zu viele offene Dateien" ist anscheinend ein häufiger Fehler unter Leopard, möglicherweise in anderen Versionen von OS X:
Es gibt viele (verwandte?) Möglichkeiten, um die Grenzwerte für geöffnete Dateien anzuzeigen:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 512
virtual memory (kbytes, -v) unlimited
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1024 2048
maxfiles 2048 4096
$ sysctl -a | grep files
kern.maxfiles = 32768
kern.maxfilesperproc = 16384
kern.maxfiles: 32768
kern.maxfilesperproc: 16384
kern.num_files: 2049
In einigen der obigen Posts wurde behauptet, dass diese mit den folgenden Befehlen geändert werden können:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
Von den obigen Befehlen haben jedoch nur die sysctl
Befehle eine scheinbare Wirkung (dh ulimit -n
und launchctl limit
zeigen keine Änderung, nachdem die obigen Befehle eingegeben wurden, während sysctl -a
die angeforderten Änderungen angezeigt werden).
Die entsprechenden Positionen zum Ändern dieser Parameter für das Betriebssystem sind:
/etc/sysctl.conf
/etc/launchd.conf
Ich habe auch eine Antwort gefunden, die lautet, dass ulimit
nur die aktuelle Shell gesteuert wird.
Wie kann ich die Obergrenzen für max files / max open files unter macOS nach oben korrigieren?
Folgendes sollte die häufigsten Probleme lösen (und ist in der Reihenfolge ihrer Hierarchie aufgeführt):
Anmerkungen:
quelle
In einfachen Worten:
Der
ulimit
Befehl bietet "Kontrolle über die Ressourcen, die der Shell und den von ihr erstellten Prozessen zur Verfügung stehen" (siehe:help ulimit
undman bash
). Die der Shell zugewiesenen Ressourcen sind durch die Systemressourcenbeschränkungen begrenzt.Das
launchctl
steuert den maximalen Ressourcenverbrauch des Systems durch den aktuellen Prozess (siehe:man setrlimit
undman launchctl
). Maximalwerte sind durch die Kernelgrenzen begrenzt.Die
sysctl
Kontrollen Kernel-Limits (siehe:man sysctl
und BSDs Tuning Kernel Limits ).Je nach Problem können Sie die einzelnen Befehle verwenden, um die Grenzwerte zu erhöhen.
Siehe auch: Welche Beziehung besteht zwischen `launchctl limit` und` ulimit`?
Für das Problem mit zu vielen geöffneten Dateien hängt dies davon ab, welches Soft- oder Hard-Limit genau erreicht wurde (ob es sich um ein lokales Shell-Skript, ein globales Skript
root
, eine App oder alle Prozesse gleichzeitig handelt). Es lohnt sich, alle Limits (Shell-, Launchd- und Kernel-Limits) zu erhöhen .Informationen zum dauerhaften Erhöhen der Grenzwerte finden Sie unter: So steuern Sie den maximalen Ressourcenverbrauch des Systems auf einem Mac dauerhaft.
quelle