¿Cómo aumentar correctamente los límites de un `ulimit -n`?

Estoy tratando de descargar la demostración de X-Plane 10 a través de uTorrent, sin embargo, aparece el error "demasiados archivos abiertos" todo el tiempo. Puedo hacer la descarga alternativa (que lleva una eternidad y un día), pero me pregunto cómo puedo aumentar la configuración en Lion.

Encontré información contradictoria al respecto, algunos dicen que ulimit -nson sysctllas herramientas de elección, mientras que otros informan que launchctles correcto.

El valor informado para ulimit -nes 256, lo mismo para launchctl limit:

cpu         unlimited      unlimited      
filesize    unlimited      unlimited      
data        unlimited      unlimited      
stack       8388608        67104768       
core        0              unlimited      
rss         unlimited      unlimited      
memlock     unlimited      unlimited      
maxproc     709            1064           
maxfiles    256            unlimited      

Respuestas (3)

Lo siguiente debería resolver la mayoría de las soluciones (y se enumeran en orden de jerarquía):

echo 'kern.maxfiles=20480' | sudo tee -a /etc/sysctl.conf
echo -e 'limit maxfiles 8192 20480\nlimit maxproc 1000 2000' | sudo tee -a /etc/launchd.conf
echo 'ulimit -n 4096' | sudo tee -a /etc/profile

Notas:

  1. Deberá reiniciar para que estos cambios surtan efecto.
  2. AFAIK, ya no puede establecer límites para 'ilimitado' en OS X
  3. los maxfiles de launchctl están limitados por los maxfiles de sysctl y, por lo tanto, no pueden superarlos
  4. sysctl parece heredar kern.maxfilesperproc de launchctl maxfiles
  5. ulimit parece heredar su valor de 'archivos abiertos' de launchctl por defecto
  6. puede establecer un ulimit personalizado dentro de /etc/profile, o ~/.profile; aunque esto no es necesario, he proporcionado un ejemplo
  7. Tenga cuidado al establecer cualquiera de estos valores en un número muy alto en comparación con su valor predeterminado: las características existen estabilidad/seguridad. Tomé estos números de ejemplo que creo que son razonables, escritos en otros sitios web.
  8. Cuando los límites de launchctl son más bajos que los de sysctl, ha habido informes de que los de sysctl relevantes se incrementarán automáticamente para cumplir con los requisitos.
una década después... las mac m1 más nuevas tienen un maxproc diferente ulimit -Sapara ver todos los valores antes de configurar. aunque los descriptores de archivo son muy bajos todavía en 256

Básicamente ulimitcontrola los recursos disponibles para el shell y sus procesos, donde launchctlcontrola el máximo de recursos para el sistema y sus procesos.

Para el shell actual, el límite máximo de archivos abiertos se puede cambiar mediante: ulimit -n 10240.

Nota: Puede usar un parámetro adicional para un límite -Ssuave o duro.-H

Si no se puede cambiar el límite de shell launchctl, primero debe usar el comando, por ejemplo

sudo launchctl limit maxfiles 10240 unlimited

Para cambiar los límites del núcleo, ejecute: sudo sysctl -w kern.maxfiles=10240.

Otras lecturas:

Puede aumentar el número máximo de archivos abiertos ejecutando ulimit -n 1024e iniciando uTorrent desde la línea de comandos. En mi caso, lanzaría Transmission usando el comando:

/Applications/Transmission.app/Contents/MacOS/Transmission

Debe iniciar la aplicación de torrent desde el shell donde invocó ulimit, sus cambios no tienen ningún efecto de lo contrario, aislar los cambios es la ventaja de ulimit.

Eso no parece ayudar, incluso con el máximo ulimit -n permite establecer (10240) obtengo el mismo error :(
pero, ¿cómo modifico el ulimitvalor de la máquina para el próximo reinicio?