Il est important de savoir qu'il existe deux types de limites:
- Une limite stricte est configurable uniquement par root. Il s'agit de la valeur (limite) la plus élevée possible pour la limite souple.
- Une limite souple peut être définie par un utilisateur ordinaire. Il s'agit de la limite réelle en vigueur.
Solution pour une seule session
Dans la coque, définissez la limite souple:
ulimit -Sn 2048
Cet exemple augmentera la limite réelle à 2048 mais la commande réussira uniquement si la limite stricte (vérifier:) ulimit -Hn
est identique ou supérieure. Si vous avez besoin de valeurs plus élevées, augmentez la limite stricte en utilisant l'une des méthodes ci-dessous. Les limites sont définies par processus et elles sont héritées par les processus nouvellement générés, donc tout ce que vous exécutez après cette commande dans le même shell aura les nouvelles limites.
Modification de la limite stricte en une seule session
Ce n'est pas facile car seul root peut modifier une limite stricte et après avoir basculé sur root, vous devez revenir à l'utilisateur d'origine. Voici la solution avec sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Solution à l'échelle du système
Dans Debian et de nombreux autres systèmes utilisant, pam_limits
vous pouvez définir les limites à l'échelle du système dans /etc/security/limits.conf
et dans les fichiers dans /etc/security/limits.d
. Le fichier conf contient une description. Exemples de lignes:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Cela définira la limite fixe et la limite souple par défaut pour les utilisateurs du groupe webadmins
après la connexion.
Autres limites
La valeur de limite stricte est limitée par la limite globale de la valeur des descripteurs de fichiers ouverts, /proc/sys/fs/file-max
qui est assez élevée par défaut dans les distributions Linux modernes. Cette valeur est limitée par la NR_OPEN
valeur utilisée lors de la compilation du noyau.
N'y a-t-il pas une meilleure solution?
Vous pourriez peut-être vérifier si tous les *log
fichiers que vous alimentez tail -f
sont des fichiers vraiment actifs qui doivent être surveillés. Il est possible que certains d'entre eux soient déjà fermés pour la journalisation et vous pouvez simplement ouvrir un plus petit nombre de fichiers.