OK, j'ai enfin compris ça. Les limites que je fixais dans /etc/security/limits.conf
étaient appliqués, mais ils n'étaient pas appliqués à la connexion graphique. Cela peut être vérifié comme ceci à partir d'une fenêtre de terminal :
$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535
Plus de recherches m'ont conduit à ce rapport de bogue, qui m'a orienté dans la bonne direction. Afin de modifier la limite utilisée par le shell de connexion, nous devons ajouter la ligne suivante à /etc/systemd/user.conf
:
DefaultLimitNOFILE=65535
Ce changement fonctionne, mais n'affecte que la limite souple. (Nous laissant toujours plafonné avec une limite stricte de 4096.) Afin d'affecter également la limite stricte, nous devons modifier /etc/systemd/system.conf
avec le même changement.
Les modifications que j'ai apportées dans /etc/pam.d
n'étaient pas nécessaires. Au moins sur Ubuntu, cela fonctionne déjà. De plus, il n'était pas nécessaire de modifier les paramètres pour root
et *
dans limits.conf. Modification des limites pour mkasberg
était suffisant, du moins pour mon cas d'utilisation.
En résumé
Si vous souhaitez augmenter la limite indiquée par ulimit -n
, vous devez :
-
Modifier
/etc/systemd/user.conf
et/etc/systemd/system.conf
avec la ligne suivante (cela prend en charge la connexion graphique):DefaultLimitNOFILE=65535
-
Modifier
/etc/security/limits.conf
avec les lignes suivantes (cela prend en charge la connexion non-GUI):mkasberg hard nofile 65535 mkasberg soft nofile 65535
-
Redémarrez votre ordinateur pour que les modifications prennent effet.
Pas besoin de changer quoi que ce soit dans le /etc/security/limits.conf
fichier, il est ignoré si vous utilisez systemd.
(reproduire une réponse modifiée à une autre question sur le réseau...)
Une alternative pour ceux qui préfèrent ne pas modifier le /etc/systemd/system.conf
par défaut et /etc/systemd/user/conf
fichiers :
-
créer un nouveau fichier
/etc/systemd/system.conf.d/limits.conf
avec ces contenus :[Manager] DefaultLimitNOFILE=65535
-
exécutez
systemctl daemon-reexec
en tant que root -
déconnectez-vous et reconnectez-vous
-
vérifiez votre nouvelle limite avec
ulimit -n
.
Se référer au systemd-system.conf
page de manuel pour plus de détails.
TL;DRI a ressenti le besoin de concentrer les réponses, afin qu'elles soient plus faciles à trouver. Il m'a fallu des siècles pour rassembler toutes les pièces pour que cela fonctionne correctement...
Il y a 2 emplacements à considérer.
-
Session graphique
$ grep DefaultLimitNOFILE /etc/systemd/system.conf DefaultLimitNOFILE=65535
ou mieux ici :
$ grep NOFILE /etc/systemd/system.conf.d/limits.conf DefaultLimitNOFILE=65535
-
environnement shell
$ grep nofile /etc/security/limits.conf user soft nofile 65535 user hard nofile 65535`
ou mieux ici :
$ grep nofile /etc/security/limits.d/user.conf user soft nofile 65535 user hard nofile 65535
-
Après avoir modifié les paramètres dans les fichiers ci-dessus, redémarrez puis vérifiez les limites avec :
ulimit -n -Hn -Sn