Linux corrige l'erreur «trop de fichiers ouverts»

Linux corrige l'erreur «trop de fichiers ouverts»

Ce tutoriel explique comment résoudre l'erreur Linux «trop de fichiers ouverts».

Après avoir lu cet article, vous comprendrez la cause de l'erreur que vous obtenez et vous saurez comment le réparer. Vous apprendrez non seulement à corriger l'erreur, mais aussi à d'autres aspects importants de vos processus de fichier Linux OS.

La signification de l'erreur «trop de fichiers ouverts»

Lorsqu'un utilisateur exécute un processus, le processus a des fichiers associés contenant des informations sur l'utilisation du fichier. Par exemple, les descripteurs de fichiers peuvent informer le noyau comment accéder à un fichier, ou comment le gérer à une autre ressource. Par exemple, lorsque nous utilisons un tuyau pour rediriger un processus vers un autre.

Par défaut, chaque processus exécuté Linux a au moins 3 fichiers associés appelés Descripteurs de fichiers: Stdin, stdout et stderr. Leur fonction est montrée dans le tableau ci-dessous.

Descripteur de fichiers Nombre Fonction
Stdin 0 Fait référence à la méthode d'entrée du clavier
Stdout 1 Imprime ou redirige la sortie, se réfère à l'écran
Stderr 2 Imprime ou redirige les erreurs, se réfère à l'écran

Il y a une limite des utilisateurs et processus des descripteurs de fichiers qui peuvent être exécutés simultanément. Lorsque la limite est atteinte et que l'utilisateur ou le processus essaie d'ouvrir des descripteurs de fichiers supplémentaires, nous obtenons le «Trop d'erreur de fichiers ouverts".

Par conséquent, la solution à cette erreur consiste à augmenter la limite des descripteurs de fichiers qu'un utilisateur ou un processus peut ouvrir.

Correction de l'erreur Linux «Trop de fichiers ouverts»

Pour vérifier la limite des fichiers descripteurs pour la session en cours, exécutez la commande affichée ci-dessous.

ulimit -n

Comme vous pouvez le voir ci-dessus, la limite est 1024.

Maintenant, vérifions la limite de l'utilisateur en exécutant la commande suivante:

ulimit -u

Pour apprendre le nombre de fichiers actuels, vous pouvez utiliser la commande affichée dans la capture d'écran ci-dessous.

lsof | wc -l

La commande illustrée ci-dessous peut être utilisée pour augmenter la limite des fichiers de descripteur pour résoudre cette erreur. Pourtant, cela peut ne pas fonctionner si la limite spécifiée dans les fichiers de configuration est atteinte.

Comme vous pouvez le voir, le système ne nous permet pas d'augmenter la limite. Dans un tel cas, nous devons modifier quelques fichiers.

Dans le premier fichier à modifier, vous verrez deux types de limites: les limites dures et douces:

La limite dure représente la limite maximale autorisée pour la limite souple. La modification de la limite dure nécessite des privilèges.

D'un autre côté, la limite souple est utilisée par le système pour limiter toutes les ressources système pour exécuter les processus. La limite souple ne peut pas être plus grande que la limite dure.

Vous pouvez apprendre à la fois des limites dures et mous avec les commandes indiquées dans la capture d'écran suivante, où Ulimit -Sn montre la limite souple et Ulimit -hn montre la limite dure.

Tout d'abord, ouvrez le fichier suivant avec les privilèges:

Sudo Nano / etc / Security / Limits.confli

Modifier les lignes indiquées ci-dessous augmenter la limite. Dans mon cas, j'augmente la limite douce de 1024 à 2048. Ici, vous pouvez également modifier la limite dure si nécessaire.

Ensuite, redémarrez le démon-exec à l'aide de SystemCTl comme indiqué ci-dessous.

Sudo Systemctl Daemon-exec

Ouvrez un nouveau terminal ou redémarrez la session pour vérifier que les modifications ont été apportées avec succès et essayez de modifier à nouveau l'ulimit en exécutant la commande suivante et en modifiant la limite de celle que vous avez spécifiée dans le / etc / sécurité / limites.confli déposer.

ulimit -N 2048

Comme vous pouvez le voir ci-dessus, la limite a été mise à jour avec succès.

Dans le cas où cela ne fonctionnerait pas pour vous, ouvrez le fichier suivant avec les privilèges:

sudo nano / etc / systemd / système.confli

Trouver la ligne DefaultLimitNofile = et modifier le premier numéro avant le côlon, augmentant la limite. Dans mon cas, je l'ai augmenté de 1024 à 2048. Ensuite, fermez et quittez le fichier en enregistrant les modifications.

Ouvrez également le fichier suivant avec les privilèges:

sudo nano / etc / systemd / utilisateur.confli

Trouvez la même ligne et modifiez-la, en répétant les modifications apportées précédemment.

Redémarrez à nouveau le démon de réexpression en utilisant systemctl.

Sudo Systemctl Daemon-exec

Redémarrez la session et utilisez la commande suivante, en remplaçant 2048 par la limite que vous souhaitez définir et configuré dans les fichiers de configuration:

ulimit -N 2048

La commande suivante renvoie la limite de l'ensemble du système:

chat / proc / sys / fs / file-max

Vous modifiez la limite du système à l'aide de la commande suivante:

sudo sysctl -w fs.file-max =

Pour rendre le changement permanent, modifiez le fichier suivant avec les privilèges:

sudo nano / etc / sysctl.confli

Ajouter le remplacement de la ligne suivante Avec la nouvelle limite que vous souhaitez définir:

FS.file-max =

Redémarrer pour appliquer de nouvelles modifications avec la commande ci-dessous.

sudo sysctl -p

C'est tout, après avoir augmenté l'ulimit, le «Trop de fichiers ouverts”L'erreur doit être corrigée.

Conclusion

Cette erreur peut être facilement corrigée par n'importe quel utilisateur Linux. Linux propose différentes façons d'aborder ce problème, n'hésitez pas à les essayer tous pour se débarrasser de cette erreur. Les étapes décrites ci-dessus sont valables pour de nombreuses distributions Linux mais effectuées sur les distros basés sur Debian. Si vous êtes intéressé à en savoir plus sur les descripteurs de fichiers, nous avons publié un contenu spécifique sur ce sujet, vous pouvez lire sur ce site. Les descripteurs de fichiers sont un composant de base de tous les systèmes d'exploitation.

Merci d'avoir lu ce tutoriel expliquant comment résoudre l'erreur «trop de fichiers ouverts» dans Linux. Continuez à nous suivre pour des articles Linux plus professionnels.