¿Cuál es la relación entre `launchctl limit` y` ulimit`?

11

No hay ninguna configuración ulimit en los archivos de inicio del sistema / scripts de inicio de shell.

ulimit -a muestra:

-u: processes                       1064
-n: file descriptors                256

launchctl limit muestra:

maxproc     2048           2048           
maxfiles    2048           2048

Recuerdo vagamente que los límites de launchctl deberían coincidir con la salida ulimit de un shell, podría estar equivocado.

¿Existe alguna relación entre los límites de lauchctl y ulimit?

Howard
fuente
¿No obtiene respuestas satisfactorias de la página de manual de comandos?
Andrew U.
@AndrewU. La página de manual de launchctl no menciona el límite, la página de manual de ulimit no menciona launchctl o launchd.
Howard

Respuestas:

10

En el shell, ulimit proporciona "control sobre los recursos disponibles para el shell y los procesos iniciados por él" (ver man bash). Por lo tanto, se aplica solo al shell y a sus hijos. Los límites para launchd están relacionados con él y los procesos que gestiona. Los dos están separados.

Los programas individuales pueden establecer sus propios límites de recursos llamando a las rutinas de la Biblioteca Estándar C ulimit()o getrlimit()y setrlimit(). Ciertos límites de recursos no se pueden elevar a menos que el proceso se ejecute como el superusuario.

Como ejemplo práctico, depuro grandes proyectos de software y el límite predeterminado del shell para la cantidad de archivos abiertos no es lo suficientemente grande. En mi archivo .bashrc, tengo lo siguiente:

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

Ahora mi depurador no se quejará de que no puede abrir todos los archivos que necesita. Obviamente, esto no debería tener impacto en launchd.

ithos67
fuente
1
Para explicar eso: la configuración predeterminada de ulimit se deriva de launchctl limit; aunque el usuario puede cambiar los números ulimit, sin embargo, no pueden exceder launchctl limitlos límites estrictos.
Howard
esto se restablecerá al reiniciar
engineerDave