Un límite rígido solo puede aumentarse por root (cualquier proceso puede reducirlo). Por lo tanto, es útil para la seguridad: un proceso no root no puede sobrepasar un límite estricto. Pero es inconveniente porque un proceso no root no puede tener un límite inferior al de sus hijos.
El proceso puede cambiar un límite flexible en cualquier momento. Por lo tanto, es conveniente siempre que los procesos cooperen, pero no es bueno para la seguridad.
Un caso de uso típico para los límites flexibles es deshabilitar los volcados de núcleo ( ulimit -Sc 0
) mientras se mantiene la opción de habilitarlos para un proceso específico que está depurando ( (ulimit -Sc unlimited; myprocess)
).
El ulimit
comando de shell es una envoltura alrededor de la setrlimit
llamada del sistema, por lo que allí es donde encontrará la documentación definitiva.
Tenga en cuenta que algunos sistemas pueden no implementar todos los límites. Específicamente, algunos sistemas no admiten límites por proceso en los descriptores de archivos (Linux sí); si el suyo no lo hace, el comando de shell puede ser un no-op
ulimit -n
? Intente ejecutar un shell con un valor muy bajo (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
). ¿Cuál es la salida?