ulimit -n
définit la limite souple par défaut; vous pouvez ajouter l' -H
option pour afficher / définir la limite stricte.
Pour la plupart, les limites douces et dures se comportent comme ceci:
- Les processus de root (en fait, tout processus avec
CAP_SYS_RESOURCE
) peuvent augmenter ou diminuer toute limite sur n'importe quel processus.
- les processus de tout utilisateur peuvent abaisser toute limite sur les autres processus appartenant à cet utilisateur.
- les processus de tout utilisateur peuvent augmenter la limite logicielle jusqu'à la limite stricte des processus appartenant à cet utilisateur.
- Si un processus tente de dépasser sa limite souple, la tentative échoue.
Ainsi, les limites strictes fonctionnent comme un plafond sur les limites souples (sauf pour root, qui, comme d'habitude, peut tout faire).
Il existe une exception: une limite logicielle douce envoie un SIGXCPU
signal. Un processus peut choisir d'ignorer cela, ou de passer du temps à nettoyer, etc. Une fois la limite matérielle du processeur dépassée, le noyau envoie SIGKILL
- ce qui n'est ni capturable, ni manipulable, ni ignorable. Ainsi, dans ce cas, la limite logicielle fonctionne comme un avertissement "vous n'avez plus de temps CPU - terminez et quittez rapidement, sinon!" et la limite stricte est le "ou bien".
La plupart sont par processus, mais quelques-uns (comme RLIMIT_NPROC
) sont par utilisateur. La page de manuel getrlimit (2) spécifie pour chaque limite.
ulimit -n
? Cela n'affecte pas les processus déjà lancés, uniquement le shell et les futurs. En dehors de cela, le processus peut augmenter sa limite souple à la limite dure. Vous pouvez donc utiliserulimit -H -n
pour l'arrêter.