La mayoría de los valores¹ en limits.conf
son límites que se pueden establecer con el ulimit
comando de shell o la setrlimit
llamada al sistema. Son propiedades de un proceso. Los límites se aplican independientemente para cada proceso. En particular, cada proceso puede tener hasta nofile
archivos abiertos. No hay límite para la cantidad de archivos abiertos acumulados por los procesos de un usuario.
El nproc
límite es un caso un poco especial, ya que suma todos los procesos de un usuario. No obstante, todavía se aplica por proceso: cuando un proceso llama fork
para crear un nuevo proceso, la llamada se rechaza si el número de procesos que pertenecen al euid del proceso es mayor que el RLIMIT_NPROC
valor del proceso .
La limits.conf
página del manual explica que los límites se aplican a una sesión. Esto significa que todos los procesos en una sesión tendrán todos estos mismos límites (a menos que uno de estos procesos los cambie). No significa que se realice una suma sobre los procesos en una sesión (eso ni siquiera es algo que el sistema operativo rastrea; hay una noción de sesión, pero es más precisa que eso, por ejemplo, cada aplicación X11 tiende a finalizar en su propia sesión). La forma en que funciona es que el proceso de inicio de sesión establece algunos límites, y todos los procesos secundarios los heredan.
¹ Las excepciones son maxlogins
, maxsyslogins
y chroot
, que se aplican como parte del proceso de inicio de sesión para denegar o influir en el inicio de sesión.
limit.conf
cambia entre los horarios en que se abrieron las sesiones, o si se establecen límites diferentes (tendrían que ser más pequeños, excepto la raíz).profile
.prlimit --pid $pid
en cada uno, puede cambiar efectivamente el límite para una sesión activa. Tenga en cuenta que es posible que deba hacerlo varias veces en caso de que algunos procesos se bifurquen mientras está iterando.RLIMIT_NPROC
conjunto de 2 en A y 3 en B. Entonces B puede bifurcar un proceso más, pero A no puede.