Linux lsof : apprenez à lister les fichiers et à analyser votre système

L’outil lsof sous Linux vous permet de contrôler votre système et de détecter plus rapidement les éventuels problèmes. Le programme recense pour cela les fichiers ouverts et peut être optimisé selon vos objectifs à l’aide de filtres et d’options.

Qu’est-ce que Linux lsof ?

Sous Linux, lorsque vous souhaitez contrôler et analyser votre système, la commande lsof s’avère être un outil très facile à utiliser. Développé et publié dès 1994 par Vic Abell, ce programme en open source fait partie, par défaut, de nombreuses distributions Linux, comme Debian ou Ubuntu. lsof signifie « List open files », soit « recenser les fichiers ouverts ». Le programme fournit des informations relatives aux types de fichiers qui sont ou ont été ouverts à un moment donné par les processus en cours.

Outre les fichiers ordinaires, l’outil peut également traiter des répertoires, des prises, des lecteurs ou des ports. Les différents processus et fichiers sont ensuite clairement recensés.

Comment fonctionne la commande lsof ?

Si la commande lsof n’existe pas sur votre système, installez-la facilement à l’aide de cette commande Linux :

$ apt-get install lsof
bash

Vous pouvez à présent utiliser l’outil pour obtenir une vue d’ensemble des processus de travail sur votre ordinateur. Cette fonction s’appuie sur le fait que, sous les systèmes Unix, tout est normalement visible sous forme de fichier. La commande lsof vous permet donc de vérifier quels processus ont accès à un fichier donné.

Quelle est la syntaxe de la commande lsof ?

Vous souhaitez utiliser lsof ? Voici la syntaxe élémentaire de la commande correspondante :

$ lsof [Option] <Format>
bash

Vous pouvez certes utiliser lsof sans aucune option ni aucun filtre, mais l’affichage des résultats subséquent serait toutefois extrêmement volumineux et confus. Cette approche n’est donc pas recommandée.

Quels sont les filtres et options de Linux lsof ?

La commande lsof possède de nombreuses options d’affichage des résultats. Voici les principales :

  • -F : cette option veille à ce que tous les résultats apparaissent dans une seule colonne.
  • -l : cette option vous permet d’afficher l’ID de l’utilisateur au lieu de son nom.
  • -n : lorsque vous utilisez cette option, les adresses IP correspondantes sont affichées à la place des noms d’hôte.
  • -P : les noms de service sont remplacés par les numéros de port.
  • -r [x] : cette option veille à ce que l’affichage des résultats soit exécuté toutes les x secondes.
  • -t : avec cette option, une seule liste de PID (identifiants de processus) est affichée.

La commande lsof dispose également de nombreuses options de filtrage. Voici les principales :

  • -a : il s’agit d’une opération ET logique au lieu de l’opération OU qui est habituellement utilisée.
  • -c [Processus] : avec ce filtre, vous apprenez quels fichiers sont utilisés par quels processus.
  • +D /dossier/utilisateur : ce filtre fournit des informations à propos d’un répertoire spécifique et de son utilisateur.
  • /dev/lecteur : ce filtre vous permet de contrôler un lecteur spécifique.
  • -i [TCP/UDP ou autre port ou adresse IP] : vous recevez des informations à propos de quels processus utilisent quels services réseaux.
  • +L1 : avec ce filtre, vous recevez des informations à propos des fichiers déjà supprimés.
  • +p PID : ce filtre vous fournit des informations à propos de quels fichiers sont utilisés par quels PID.
  • /chemin d’accès/fichier : avec cette option, vous recevez des informations à propos d’un fichier spécifique.
  • -u [Utilisateur] : vous découvrez quel utilisateur utilise quels fichiers.

À quoi sert la commande Linux lsof ?

Pour terminer, nous vous présentons à l’aide de quelques exemples comment et dans quel but utiliser la commande lsof.

$ lsof -u root
bash

Cet exemple vous permet d’afficher tous les fichiers que l’administrateur a actuellement ouverts.

$ lsof /mount/path
bash

La commande lsof est souvent utilisée pour contrôler quels programmes bloquent la commande mount. Elle ne peut pas être exécutée lorsque les fichiers sont encore ouverts.

$ lsof -n -i
bash

Cette commande vous permet de répertorier tous les ports actuellement ouverts.