
Ich muss das lästige Limit „Zu viele geöffnete Dateien im System“ unter OS X 10.7.1 loswerden.
Gibt es einen Weg?
Antwort1
Entsprechenddieser hilfreiche Artikel(was ich zum Lesen empfehle):
Standardmäßig ist die maximale Anzahl von Dateien, die Mac OS X öffnen kann, auf 12.288 eingestellt und die maximale Anzahl von Dateien, die ein bestimmter Prozess öffnen kann, beträgt 10.240.
Sie können dies wie folgt überprüfen:
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
Sie können die Limits (auf eigenes Risiko) erhöhen mit:
sysctl -w kern.maxfiles=20480
(oder welche Nummer auch immer Sie wählen)sysctl -w kern.maxfilesperproc=18000
(oder welche Nummer auch immer Sie wählen)
Um die Änderung dauerhaft zu machen, verwenden Sie sudo
zum Einpflegen Ihrer Einstellungen /etc/sysctl.conf
(die Sie ggf. vornehmen müssen) folgendes:
kern.maxfiles=20480
kern.maxfilesperproc=18000
Hinweis: Unter OS X 10.10 oder niedriger können Sie eine Einstellung in /etc/launchd.conf
„Like“ hinzufügen limit maxfiles
, die alles überschreibt, was Sie hier eingeben.
Nochmals aus dem Artikel:
Sobald Sie dies getan haben, verfügt der Kernel selbst über eine maximale Anzahl von Dateien, die Shell jedoch möglicherweise nicht. Und da die meisten Prozesse, die so viele Dateien belegen, von der Shell initiiert werden, sollten Sie diese Zahl erhöhen.
Der Befehl dafür lautet:
ulimit -S -n 2048 # or whatever number you choose
Auch diese Änderung ist temporär; sie gilt nur für die aktuelle Shell-Sitzung. Sie können sie zu Ihrer Shell-Konfigurationsdatei ( oder was auch immer) hinzufügen, .bashrc
wenn .zshrc
Sie möchten, dass sie jedes Mal ausgeführt wird, wenn Sie eine Shell öffnen.
Antwort2
Es scheint, als gäbe es für jede Version von OS X eine völlig andere Methode zum Ändern des Limits für geöffnete Dateien!
Für OS X Sierra(10.12.X) müssen Sie:
1.
Erstellen Sie eine Datei unter /Library/LaunchDaemons/limit.maxfiles.plist
und fügen Sie Folgendes ein (Sie können die beiden Zahlen (die jeweils die weichen und harten Grenzen darstellen) gerne ändern):
<?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
Antwort3
Eine andere Möglichkeit besteht darin, den Schuldigen zu finden:
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
Im letzten können Sie sehen, welche Dateien geöffnet sind:
sudo lsof -n | grep socketfil
Und beenden Sie den Prozess, falls gewünscht
kill $pid
Aus den Kommentaren:
Sie können auch eine Liste der Prozess-IDs mit den meisten geöffneten Dateien erhalten, indem Sie
lsof -n +c 0 | sed -E 's/^[^ ]+[ ]+([^ ]+).*$/\1/' | uniq -c | sort | tail
Antwort4
Leute, auf Mavericks 10.9.4
ulimit -n 2048
funktioniert einwandfrei. Möglicherweise müssen Sie eine neue Anmeldesitzung starten.