Nous avons une boîte CentOS que j'essaie d'augmenter le nombre maximum de fichiers qu'un utilisateur peut avoir ouvert. Actuellement, lorsque je lance ulimit -Sn
Je reçois 1024
et ulimit -Hn
donne 4096
. J'ai besoin de ce nombre vers 6000.
Dans /etc/sysctl.conf
J'ai mis fs.file-max = 100000
. Dans /etc/security/limits.conf
J'ai l'ensemble suivant:
username soft nofile 6000
username hard nofile 65535
Je me suis déconnecté et reconnecté en tant que username
mais je ne vois toujours pas mes modifications. De quoi ai-je besoin pour changer cette valeur?
Tout ce que j'ai dans /etc/security/limits.d
est 90-nproc.conf
. J'ai également veillé à ce que ulimit ne soit pas appelé dans mon .bash_profile ou .bashrc.
Quand je lance sysctl -p
il crache les paramètres que je veux et il montre la valeur de fs.file-max
ce que je veux. Mais quand je lance ulimit -Sn
, J'obtiens 1048. Si j'essaye d'exécuter sysctl --system
Je reçois error: Unknown parameter "--system"
.
Forcer /etc/sysctl.conf
à relire, exécutez sysctl -p
.
Fichier /etc/security/limits.conf
est lu par les shells de connexion et vous devez fermer les fenêtres de sessions actives si dans l'interface graphique. Pour les connexions à distance, il prend effet lors de la reconnexion.
Comme l'a dit une autre affiche, vous devez avoir sysctl défini la valeur dans le noyau en cours d'exécution. Il existe plusieurs façons de définir la valeur sans redémarrer:
sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system
À mon humble avis, la dernière méthode est la meilleure, car elle reproduit l'ordre dans lequel les paramètres seraient appliqués au démarrage (et donc si vous avez un conflit, cela deviendra apparent).
Remarque: je ne sais pas quelle version de CentOS vous utilisez, mais sur 7 au moins, j'ai rencontré un problème où si dracut reconstruit les initramfs pour une raison quelconque (comme lors de l'installation d'un nouveau module de noyau), il copiera le contenu de /etc/sysctl.* dans les initramfs, qui sera ensuite exécuté par systemd-sysctl pendant cette phase, même si vous supprimez plus tard ces entrées de /etc/sysctl.conf.
Dans mon environnement, j'ai édité le module systemd dracut pour exclure /etc/sysctl.* de cet environnement (car ces paramètres seront définis une fois que rootfs sera monté et que systemd-sysctl s'exécutera à nouveau). C'est juste un piège que vous pourriez rencontrer.