Selon la documentation du noyau , /proc/sys/file-max
correspond au nombre maximal, total et global de descripteurs de fichier que le noyau va allouer avant d’étouffer. C'est la limite du noyau, pas celle de l'utilisateur actuel. Vous pouvez donc ouvrir 590432, à condition que vous soyez seul sur un système inactif (mode mono-utilisateur, aucun démon en cours d'exécution).
Notez que la documentation est obsolète: le fichier existe depuis proc/sys/fs/file-max
longtemps. Merci à Martin Jambon de l'avoir signalé.
La différence entre les limites souples et les limites strictes est traitée ici, sur SE . Vous pouvez augmenter ou réduire une limite souple en tant qu'utilisateur ordinaire, à condition de ne pas dépasser la limite stricte. Vous pouvez également abaisser une limite stricte (mais vous ne pouvez plus la relever pour ce processus). En tant que superutilisateur, vous pouvez augmenter et diminuer les limites strictes et modérées. Le schéma à double limite est utilisé pour appliquer les stratégies système, mais permet également aux utilisateurs ordinaires de définir eux-mêmes des limites temporaires et de les modifier ultérieurement.
Notez que si vous essayez d'abaisser une limite fixe en dessous de la limite souple (et que vous n'êtes pas le super-utilisateur), vous récupérerez EINVAL
(argument non valide).
Ainsi, dans votre cas particulier ulimit
(ce qui correspond à ulimit -Sf
), vous n’avez pas de limite souple à la taille des fichiers écrits par le shell et ses sous-processus . (c'est probablement une bonne idée dans la plupart des cas)
Votre autre invocation, ulimit -Hn
indique la -n
limite (nombre maximal de descripteurs de fichier ouverts), et non la -f
limite, raison pour laquelle la limite souple semble supérieure à la limite stricte. Si vous entrez, ulimit -Hf
vous aurez également «illimité».
/proc/sys/fs/file-max
.