La limite de fichiers ouverts par défaut par processus est de 1024 sur - disons - Linux. Pour certains démons, cela ne suffit pas. Ainsi, la question: comment changer la limite de fichiers ouverts pour un utilisateur spécifique?
La limite de fichiers ouverts par défaut par processus est de 1024 sur - disons - Linux. Pour certains démons, cela ne suffit pas. Ainsi, la question: comment changer la limite de fichiers ouverts pour un utilisateur spécifique?
Réponses:
Sous Linux, vous pouvez le configurer via limits.conf
, par exemple via
# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf
(qui définit à la fois la limite stricte et la limite souple pour les processus démarrés sous la transmission utilisateur debian à 8192)
Vous pouvez vérifier le changement via:
# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files (-n) 8192
[..]
Si un démon est déjà en cours d'exécution, il doit être redémarré de sorte que la nouvelle limite soit récupérée. Dans le cas où le démon est démarré manuellement à partir d'une session utilisateur, l'utilisateur doit se reconnecter pour obtenir la nouvelle limite.
Alternativement, vous pouvez également spécifier des limites supplémentaires directement dans /etc/security/limits.conf
, bien sûr - mais je préfère l' .d
approche par répertoire pour une meilleure maintenabilité.
Pour appliquer différentes limites souples / strictes, utilisez deux entrées, par exemple
debian-transmission soft nofile 4096
debian-transmission hard nofile 8192
(justification derrière cela: la valeur logicielle est définie après la connexion de l'utilisateur mais un processus utilisateur est autorisé à augmenter la limite jusqu'à la limite stricte)
La configuration limits.conf
/ limits.d
est utilisée par pam_limits.so
, qui est activée par défaut sur les distributions Linux actuelles.
Il existe également une limite à l'échelle du système sous Linux /proc/sys/fs/file-max
:
Ce fichier définit une limite à l'échelle du système sur le nombre de fichiers ouverts pour tous les processus.
Par exemple, la valeur par défaut sur Ubuntu 10.04:
$ cat /proc/sys/fs/file-max
786046
Le pseudo-fichier /proc/sys/fs/file-nr
fournit plus d'informations, par exemple
$ cat /proc/sys/fs/file-nr
1408 0 786046
le nombre de descripteurs de fichiers alloués (c'est-à-dire le nombre de fichiers actuellement ouverts); le nombre de descripteurs de fichiers gratuits; et le nombre maximal de descripteurs de fichiers
Ainsi, d'une part, vous devrez peut-être également ajuster la file-max
limite à l' échelle du système , au cas où elle serait très petite et / ou que le système serait déjà très chargé. En revanche, une simple augmentation file-max
ne suffit pas, car elle n'influence pas les limites soft / hard imposées par le mécanisme pam_limits.
Pour changer file-max
sur la ligne de commande (aucun redémarrage nécessaire):
# sysctl -w fs.file-max=786046
Pour les modifications permanentes, ajoutez fs.file-max=786046
à /etc/sysctl.conf
ou /etc/sysctl.d
.
La limite supérieure activée fs.file-max
est enregistrée dans fs.nr_open
. Par exemple, (encore) sur Ubuntu 10.04:
$ sysctl -n fs.nr_open
1048576
(qui est 1024 * 1024)
Ce sysctl est également configurable.