Os valores de limits.conf são aplicados por processo?

22

Estou ajustando o valor nofile em /etc/security/limits.conf para o meu usuário oracle e tenho uma pergunta sobre o comportamento dele: nofile limita o número total de arquivos que o usuário pode abrir para todos de seus processos ou limita o número total de arquivos que o usuário pode ter aberto para cada de seus processos?

Especificamente, para o seguinte uso:

oracle                  hard    nofile                  65536
    
por Christopher Neylan 09.11.2012 / 19:17

1 resposta

19

A maioria dos valores¹ em limits.conf são limites que podem ser definidos com o comando ulimit shell ou o setrlimit chamada do sistema. Eles são propriedades de um processo. Os limites se aplicam independentemente para cada processo. Em particular, cada processo pode ter até nofile de arquivos abertos. Não há limite para o número de arquivos abertos acumulados pelos processos de um usuário.

O limite nproc é um caso especial, pois soma todos os processos de um usuário. No entanto, ainda se aplica por processo: quando um processo chama fork para criar um novo processo, a chamada é negada se o número de processos pertencentes ao processo euid for maior do que o valor RLIMIT_NPROC do processo.

O limit.conf explica que os limites se aplicam a uma sessão. Isso significa que todos os processos em uma sessão terão todos esses mesmos limites (a menos que sejam alterados por um desses processos). Isso não significa que qualquer soma seja feita sobre os processos em uma sessão (isso não é nem mesmo algo que o sistema operacional rastreia - há uma noção de sessão, mas é mais refinada que isso, por exemplo, cada aplicativo X11 tende a terminar em sua própria sessão). A maneira como funciona é que o processo de login define alguns limites e é herdado por todos os processos filhos.

¹ As exceções são maxlogins , maxsyslogins e chroot , que são aplicadas como parte do processo de login para negar ou influenciar o login.

    
por 11.11.2012 / 01:50