2 votos

Alterar ulimit para el Terminal sin cambiar los parámetros del kernel

Nota: Estoy buscando una respuesta para Catalina y para Big Sur. Los comandos de abajo fueron ejecutados en Catalina. La mayoría de las preguntas y respuestas relacionadas son para versiones más antiguas de MacOS que funcionan un poco diferente, pero incluso entonces no he encontrado una respuesta exacta a mi pregunta.

Como explicada aquí Quiero aumentar el ulimit -n (máximo de archivos abiertos) para el programa Terminal cuando se lanza desde el Finder o cuando se inicia automáticamente al iniciar la sesión como parte de la restauración de Windows abierto. Aunque tengo modo de rendimiento activado, el valor por defecto ulimit -n es sólo de 256, y la mayoría de los Windows de Terminal ocupan 2 ranuras de archivo: una para el shell y otra para el archivo "Saved Application State", lo que me limita a unos 128 Windows, que a veces no son suficientes.

La única forma que he encontrado para cambiar el ulimit para la Terminal es a través de

sudo launchctl limit maxfiles <soft-limit> <hard-limit>

Me gustaría establecer el límite suave a algo más grande que 256 pero todavía razonablemente pequeño, como 512 o 1000. Me gustaría dejar el límite duro ilimitado. Por desgracia, he descubierto que no se puede poner el límite duro en "ilimitado" pero no pasa nada, puedo ponerlo en un número adecuadamente alto. He comprobado los límites del kernel (recuerda que tengo el modo de rendimiento activado):

$ sysctl kern.maxfilesperproc kern.maxfiles
kern.maxfilesperproc: 600000
kern.maxfiles: 1200000

Me pareció razonable fijar el límite duro en kern.maxfilesperproc Así que corrí

sudo launchctl limit maxfiles 999 600000

En ese momento, varios programas se bloquearon inmediatamente. Descubrí que esto no sólo puso el ulimit También se han configurado los parámetros del kernel, y no de la manera que yo esperaba:

$ sysctl kern.maxfilesperproc kern.maxfiles
kern.maxfilesperproc: 999
kern.maxfiles: 600000

Así que los programas con más de 1000 archivos abiertos se bloquean. Obviamente, esos programas sabían que iban a necesitar tener muchos archivos abiertos y ajustaron sus límites de recursos apropiadamente, lo cual está bien, y necesito mantener eso. Por otro lado, programas como Terminal pueden entrar en bucles que consumen recursos hasta que se agotan, así que quiero mantener los límites blandos para esos programas bajos.

Intenté establecer ulimit en /etc/bashrc y /etc/zshrc pero estos sólo afectan a sus respectivos shells, no a los comandos como Terminal que son lanzados por el Finder/ launchd .

¿Hay alguna manera de ajustar el límite suave por defecto para el número de archivos abiertos ( ulimit -Sn , setrlimit() ) para la Terminal (o para todo el sistema) sin cambiar también el parámetro del kernel kern.maxfilesperproc ( sysctl )?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X