Welche Beziehung besteht zwischen `launchctl limit` und` ulimit`?

11

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

ulimit -a zeigt an:

-u: processes                       1064
-n: file descriptors                256

launchctl limit zeigt an:

maxproc     2048           2048           
maxfiles    2048           2048

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

Gibt es einen Zusammenhang zwischen den Grenzen des Lauchctl und dem Ulimit?

Howard
quelle
Erhalten Sie keine zufriedenstellenden Antworten auf der Manpage der Befehle?
Andrew U.
@ AndrewU. Die Handbuchseite von launchctl erwähnt kein Limit, die Handbuchseite von ulimit erwähnt weder launchctl noch launchd.
Howard

Antworten:

10

In der Shell bietet ulimit "Kontrolle über die Ressourcen, die der Shell zur Verfügung stehen, und über die von ihr gestarteten Prozesse" (siehe man bash). Daher gilt es nur für die Shell und ihre untergeordneten Elemente. Die Grenzen für launchd hängen damit zusammen und mit den von ihm verwalteten Prozessen. Die beiden sind getrennt.

Einzelne Programme können ihre eigenen Ressourcenlimits festlegen, indem sie die Standard C Library-Routinen ulimit()oder getrlimit()und aufrufen setrlimit(). Bestimmte Ressourcenlimits können nur erhöht werden, wenn der Prozess als Superuser ausgeführt wird.

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 wird sich mein Debugger nicht beschweren, dass er nicht alle benötigten Dateien öffnen kann. Dies sollte natürlich keine Auswirkungen auf den Start haben.

ithos67
quelle
1
Um dies näher zu erläutern: Die Standardeinstellungen für ulimit werden abgeleitet von launchctl limit; Der Benutzer kann zwar die ulimit-Zahlen ändern, sie dürfen jedoch die launchctl limitharten Grenzwerte nicht überschreiten .
Howard
Dies wird beim Neustart zurückgesetzt
EngineerDave