Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Paradigmes informatiques

Nombre de fichiers ouverts/ouvrables sur Linux

07/05/2022
Sur Linux comme sur Windows, il y a des seuils fixant le nombre de fichiers ouvrables simultanément par processus et pour tout le système. Voici quelques commandes pour les afficher.

Si trop de fichiers sont ouverts sur un système, des erreurs peuvent survenir, ne permettant pas de faire aboutir l'ouverture d'une base de données, l'appel à une URL... Il faut donc s'assurer que ce nombre reste en dessous du seuil maximum.

Nombre maximum de fichiers ouvrables sur le système

L'utilitaire sysctl affiche les paramètres du système d'exploitation. La variable file-max indique le nombre maximum de fichiers ouvrables par tous les process.

sysctl fs.file-max

Nombre maximum de fichiers ouvrables par process

L'utilitaire ulimit affiche les limites définies par process. Le champ "open files" contient le nombre maximum de fichiers ouvrables par process.

ulimit -n

Nombre de fichiers ouverts par un utilisateur

L'utilitaire lsof affiche des détails sur les fichiers ouverts. En comptant le nombre de lignes de la réponse, on obtient le nombre de fichiers ouverts.

lsof -u <identifiant_utilisateur> | wc -l

Afficher en continu le nombre de fichiers ouverts par un process particulier

Cette ligne de commande affiche en continu, avec une pause de 10 secondes, le nombre de fichiers ouverts par chaque process Java. S'il y a plusieurs process Java, cela crée autant de colonnes correspondantes :

while true ; do echo -n "$(date '+%F %H:%M:%S')" ; for j in `pidof java`; do nb=$(lsof -w -p ${j} | wc -l); echo -e -n "\tPID ${j}=${nb}" ; done; echo ; sleep 10 ; done

Si l'utilitaire lsof n'est pas disponible, il peut être remplacé par la commande suivante qui renvoie sensiblement les mêmes valeurs :

ls /proc/<process_id>/fd/

Afficher les fichiers ouverts les plus volumineux

Affiche les 10 fichiers ouverts les plus volumineux, triés par ordre décroissant de taille, à l'exclusion des fichiers effacés :

lsof -a / | tail -n +2 | grep ' REG ' | grep -v ' DEL ' | awk '{ print $7,"("$7/1048576 " Mo)",$9 }' | sort -t ' ' -k 1 -V -r | uniq -u | head -10

Ajouter "-u utilisateur" après lsof pour limiter l'exécution aux fichiers d'un utilisateur spécifique.

Ce script est testable en simulant un fichier ouvert (redirection de la sortie dans un fichier un fichier puis augmentation de sa taille jusqu'à 200 mégaoctets) :

cat > test.eq &
truncate -s 200M test.eq

Script affichant les fichiers ouverts par Java

En guise de fin, voici un script affichant les fichiers ouverts par les processus Java : il récupère le nombre maximal de fichiers ouvrables et le compare à tous les processus Java ouverts : verifie_fichiers_ouverts.sh(1 Ko)

Il peut bien sûr être adapté à n'importe quel processus autre que Java.

Dernière modification le 13/06/2023 - Quillevere.net

Commentaires

Aucune inscription n'est requise si vous souhaitez

Rechercher sur le site

fr en rss RSS info Informations