ulimit -n
define o limite flexível por padrão; você pode adicionar a opção -H
para visualizar / definir o limite máximo.
Na maior parte, os limites suaves e rígidos se comportam assim:
-
Os processos do
- root (na verdade, qualquer processo com
CAP_SYS_RESOURCE
) podem aumentar ou diminuir qualquer limite em qualquer processo. - os processos de qualquer usuário podem reduzir qualquer limite em outros processos pertencentes a esse usuário.
- os processos de qualquer usuário podem aumentar o limite flexível até o limite rígido dos processos pertencentes a esse usuário.
- Se um processo tentar exceder seu limite flexível, a tentativa falhará.
Assim, os hard limits funcionam como um limite para os soft limits (exceto para root, que normalmente pode fazer qualquer coisa).
Existe uma exceção: um limite de CPU suave envia um sinal SIGXCPU
. Um processo pode optar por ignorar isso, ou passar tempo fazendo limpeza, etc. Uma vez que o limite rígido da CPU é ultrapassado, o kernel envia SIGKILL
- que não é passível de captura, manipulável ou ignorável. Portanto, neste caso, o limite suave funciona como um aviso "você está sem tempo de CPU - termine e saia rapidamente, ou então!" e o limite rígido é o "ou então".
A maioria é por processo, mas alguns (como RLIMIT_NPROC
) são por usuário. A página de manual getrlimit (2) especifica cada limite.