Comment configurer la limite de fichier ouvert de processus d'un utilisateur?

8

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?

maxschlepzig
la source

Réponses:

16

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' .dapproche 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.dest utilisée par pam_limits.so, qui est activée par défaut sur les distributions Linux actuelles.

en relation

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-nrfournit 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-maxlimite à 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-maxne suffit pas, car elle n'influence pas les limites soft / hard imposées par le mécanisme pam_limits.

Pour changer file-maxsur 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.confou /etc/sysctl.d.

La limite supérieure activée fs.file-maxest 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.

maxschlepzig
la source
1
Merci pour la dernière information - je me grattais la tête en essayant de comprendre pourquoi je ne pouvais pas définir une limite de nofile utilisateur supérieure à 1048576 dans /etc/security/limits.conf
Liczyrzepa