Welche Beziehung besteht zwischen „launchctl limit“ und „ulimit“?

Es gibt keine ulimit-Konfiguration in Systemstartdateien/Shell-Startskripten.

ulimit -azeigt an:

-u: processes                       1064
-n: file descriptors                256

launchctl limitzeigt an:

maxproc     2048           2048           
maxfiles    2048           2048

Ich erinnere mich vage, dass die Limits von launchctl mit der ulimit-Ausgabe einer Shell übereinstimmen sollten, ich könnte mich irren.

Gibt es eine Beziehung zwischen den Grenzen von lauchctl und ulimit?

Erhalten Sie keine zufriedenstellenden Antworten von der Manpage der Befehle?
@AndrewU. Die Handbuchseite launchctl erwähnt limit nicht, die Handbuchseite ulimit erwähnt launchctl oder launchd nicht.

Antworten (1)

In der Shell bietet ulimit „Kontrolle über die Ressourcen, die der Shell und den von ihr gestarteten Prozessen zur Verfügung stehen“ (siehe man bash). Daher gilt es nur für die Shell und ihre Kinder. Die Limits für launchd beziehen sich auf ihn und die Prozesse, die er verwaltet. Die beiden sind getrennt.

Einzelne Programme können ihre eigenen Ressourcengrenzen festlegen, indem sie die Routinen der Standard-C-Bibliothek ulimit()oder getrlimit()und aufrufen setrlimit(). Bestimmte Ressourcengrenzen können nicht erhöht werden, es sei denn, der Prozess wird als Superuser ausgeführt.

Als praktisches Beispiel debugge ich große Softwareprojekte und das Standardlimit der Shell für die Anzahl der geöffneten Dateien ist nicht groß genug. In meiner .bashrc-Datei habe ich Folgendes:

# Increase the upper limit on the number of open files:
ulimit -n 1024

Jetzt beschwert sich mein Debugger nicht mehr, dass er nicht alle benötigten Dateien öffnen kann. Offensichtlich sollte dies keine Auswirkungen auf launchd haben.

Um das näher auszuführen: Standard-Ulimit-Einstellungen werden von launchctl limit; obwohl der Benutzer ulimit-Nummern ändern kann, dürfen sie jedoch keine launchctl limitfesten Grenzen überschreiten.
Dies wird beim Neustart zurückgesetzt