ulimit -n
establece el límite flexible por defecto; puede agregar la -H
opción para ver / establecer el límite duro.
En su mayor parte, los límites suaves y duros se comportan así:
- Los procesos de root (en realidad, cualquier proceso con
CAP_SYS_RESOURCE
) pueden aumentar o disminuir cualquier límite en cualquier proceso.
- los procesos de cualquier usuario pueden reducir cualquier límite en otros procesos propiedad de ese usuario.
- los procesos de cualquier usuario pueden elevar el límite flexible hasta el límite estricto de los procesos que posee ese usuario.
- Si un proceso intenta exceder su límite flexible, el intento fallará.
Entonces, los límites duros funcionan como un límite en los límites blandos (a excepción de la raíz, que normalmente puede hacer cualquier cosa).
Hay una excepción: un límite de CPU suave envía un SIGXCPU
señal. Un proceso puede optar por ignorar eso, o pasar tiempo haciendo la limpieza, etc. Una vez que se cruza el límite duro de la CPU, el núcleo envía, lo SIGKILL
que no es detectable, manejable o ignorable. Por lo tanto, en este caso, el límite flexible funciona como una advertencia: "se le acabó el tiempo de CPU: termine y salga rápidamente, o de lo contrario". y el límite duro es el "o si no".
La mayoría son por proceso, pero algunos (como RLIMIT_NPROC
) son por usuario. La página del manual de getrlimit (2) especifica para cada límite.