web-dev-qa-db-fra.com

Quelle est la limite maximale de fichiers ouverts sous Linux?

Sous Linux, lorsqu'un processus ouvre un fichier, le système d'exploitation vérifie le nombre maximal de fichiers ouverts.

Si la limite était de 1024, quel est le nombre?

Représente-t-il

  • le nombre de fichiers ouverts par le processus
  • le nombre de fichiers ouverts par l'utilisateur propriétaire du processus
  • le nombre de tous les fichiers ouverts dans le système d'exploitation actuellement?
10
kino lucky

Vous pouvez vérifier les limites souples et strictes de votre système avec la commande ulimit -a.

  1. les limites souples sont simplement les limites actuellement appliquées.
  2. les limites fixes indiquent la valeur maximale qui ne peut pas être dépassée en définissant une limite souple.

Tout utilisateur peut définir des limites souples, tandis que les limites strictes ne peuvent être modifiées que par root. Les limites sont la propriété d'un processus . Ils sont hérités lors de la création d'un processus enfant. Par conséquent, des limites au niveau du système doivent être définies lors de l'initialisation du système dans les scripts init et définies lors de la connexion de l'utilisateur, par exemple à l'aide de pam_limits.

Des valeurs par défaut sont souvent définies au démarrage de la machine. Ainsi, même si vous pouvez réinitialiser votre ulimit dans un shell individuel, vous pouvez constater qu'il revient à la valeur précédente lors du redémarrage. Vous voudrez peut-être grep vos scripts de démarrage pour les commandes existence ulimit si vous souhaitez modifier la valeur par défaut.

Si la limite était de 1024, signifie que vous/le processus pouvez ouvrir 1024 fichiers maximum. si vous dépassez cette limite, les appels système open, pipe et dup échoueront:

RLIMIT_NOFILE:

Spécifie une valeur supérieure de un au nombre maximal de descripteurs de fichier pouvant être ouverts par ce processus. Les tentatives (open(2), pipe(2), dup(2), etc.) pour dépasser cette limite génèrent l'erreur EMFILE.

12
Sathish

Il s’agit d’un nombre de fichiers ouverts descripteurs par processus . Ils peuvent tous se référer au même fichier, ou à des fichiers différents.

Vous pouvez voir les limites actuelles avec ulimit -a dans le shell ou par programme avec getrlimit. Les limites du système sont définies dans /etc/security/limits.conf.

Le modèle d'objet du système de fichiers sous Linux est:

file descriptor -> file description -> dentry -> inode
  1. descripteur de fichier est le nombre entier utilisé par l'application.
  2. description du fichier est la structure de données du noyau à laquelle un ou plusieurs descripteurs de fichier font référence.
  3. dentry est le nom du fichier. Un fichier peut avoir plusieurs noms (liens physiques).
  4. inode est le contenu du fichier.

dup crée un nouveau descripteur de fichier dans la même description de fichier. open crée un nouveau descripteur de fichier et une description de fichier. 

1
Maxim Egorushkin

À ma connaissance, cela signifie le nombre maximal de fichiers ouverts (descripteurs) par utilisateur

Edit: En fait, limits.conf définit cette valeur par utilisateur:

* hard nofile 1024

ce qui signifie une limite stricte pour tous utilisateurs (tous comme pour chacun d’eux)

Ou cela pourrait être réglé comme ceci:

myuser hard nofile 1024

ce qui signifie une limite de 1024 pour l'utilisateur myuser

0
Marcelo

S'il s'agit d'un Linux, vérifiez le résultat de:

ulimit -a

Il indiquera quelle est la limite du nombre de fichiers ouverts dans le système car il existe un moyen, sous Linux, de limiter le nombre de fichiers ouverts et de définir une limite illimitée sur les fichiers ouverts pour résoudre le problème.

0
Umesh Golla