GNU/Linux >> Tutoriels Linux >  >> Linux

7 Exemples de commande lsof sous Linux

Je suppose qu'à un moment donné, vous vous êtes demandé s'il existait un moyen d'afficher les fichiers ouverts par un processus ou un utilisateur. La bonne chose est que la réponse à cette question est la commande lsof.

Vous savez probablement déjà que la commande ls est l'abréviation de 'list'. lsof signifie "Liste des fichiers ouverts". Et c'est exactement ce qu'il fait, répertoriant les fichiers ouverts par processus, utilisateurs et ID de processus.

Laissez-moi vous montrer quelques-unes des utilisations les plus courantes de la commande lsof.

exemples de commandes lsof

Si vous utilisez la commande lsof sans options ni arguments, elle listera tous les fichiers ouverts par tous les processus du système.

lsof

Le résultat devrait ressembler à ceci :

COMMAND     PID   TID             USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

systemd       1                   root  cwd       DIR              252,1      4096          2 /

systemd       1                   root  rtd       DIR              252,1      4096          2 /

systemd       1                   root  txt       REG              252,1   1595792      17384 /lib/systemd/systemd

systemd       1                   root  mem       REG              252,1   1700792       2077 /lib/x86_64-linux-gnu/libm-2.27.so

La sortie est généralement explicite, mais vous pouvez toujours vous poser des questions sur les colonnes FD et TYPE.

FD signifie descripteur de fichier. Certaines des valeurs courantes pour FD sont :

  • cwd – Répertoire de travail actuel
  • txt – Fichiers texte
  • mem ​​- Fichier mappé en mémoire
  • mmap – Périphérique mappé en mémoire
  • NUMBER – Le descripteur de fichier réel. Il contient également des informations sur l'autorisation de fichier dans laquelle il est ouvert.

TYPE est une évidence. Il spécifie le type de fichier. Voici quelques exemples :

  • REG – Fichier standard
  • DIR – Répertoire
  • CHR - Fichier spécial caractère
  • FIFO – Premier entré, premier sorti

Fais-moi confiance. Vous ne voudriez pas exécuter la commande lsof sans aucun argument.

Pourquoi est-ce que je dis ça ? Parce qu'il commencera à inonder votre écran de milliers de résultats.

Si j'exécute la commande lsof sur un serveur Ubuntu et que je compte le nombre de lignes avec la commande wc, voici le résultat.

lsof | wc -l
11432

Oui! C'est exact. Il y a plus de onze mille fichiers ouverts par divers processus dans le système.

Ne vous inquiétez pas. La commande lsof est très utile pour le débogage car vous pouvez voir quels processus ouvrent quels fichiers et quel fichier est ouvert par quel processus.

Si vous n'êtes pas connecté en tant que root, la sortie de la commande lsof serait très limitée. C'est une bonne idée d'utiliser sudo si vous êtes connecté en tant qu'utilisateur non root.

1. Lister tous les process qui ont ouvert un fichier

C'est simple. Il vous suffit de spécifier le chemin d'accès au fichier.

lsof <path_to_file>

2. Lister tous les fichiers ouverts par l'utilisateur

Cela est pratique dans un environnement multi-utilisateurs. Vous pouvez lister tous les fichiers ouverts par un certain utilisateur de la manière suivante :

lsof -u <user_name>

Vous pouvez également spécifier plusieurs utilisateurs comme ceci :

lsof -u user1, user2

ou comme ceci :

lsof -u user1 -u user2

3. Lister tous les fichiers ouverts dans un répertoire

Si vous vous demandez quels fichiers ont été ouverts dans un certain répertoire, vous pouvez utiliser la commande lsof avec l'option +D.

lsof +D <path_to_directory>

La recherche est récursive. Ainsi, il listera tous les fichiers ouverts dans le répertoire mentionné et tous ses sous-répertoires.

4. Lister tous les fichiers ouverts par un processus

Vous devez connaître l'identifiant du processus (pid) dans ce cas. Si vous connaissez l'identifiant du processus, vous pouvez utiliser l'option -p de la commande lsof pour rechercher les fichiers ouverts par celui-ci.

lsof -p <pid>

Vous pouvez également spécifier plusieurs identifiants de processus.

lsof -p pid1, pid2, pid3

5. Lister tous les fichiers ouverts par une commande

Ceci est particulièrement utile pour le débogage. Supposons que vous souhaitiez voir quels fichiers sont utilisés par le démon http, il vous suffit de spécifier le nom de la commande (httpd dans notre exemple).

lsof -c <command>

6. Rechercher ouvert par un utilisateur et une commande ou un processus

Vous pouvez combiner des options telles que user et command et un processus à l'aide de l'option –a. Considérez-le comme l'opérateur ET. Cela vous donne un filtre supplémentaire tout en essayant d'affiner votre recherche.

lsof -a -u user_name -c command_name

7. Lister les connexions réseau et les ports avec la commande lsof

Vous pouvez également utiliser la commande lsof pour trouver des ports ouverts ou pour trouver quel processus utilise un port.

Vous pouvez classer tous les types de ports ouverts avec l'option -i :

lsof -i

La sortie peut ressembler à ceci :

lsof -i
 COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
 sshd        920            root    3u  IPv4    20507      0t0  TCP *:ssh (LISTEN)
 sshd        920            root    4u  IPv6    20535      0t0  TCP *:ssh (LISTEN)
 docker-pr  1163            root    4u  IPv6    21687      0t0  TCP *:https (LISTEN)
 docker-pr  1175            root    4u  IPv6    21717      0t0  TCP *:http (LISTEN)
 sshd       7528            root    3u  IPv4 39506588      0t0  TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED)
 systemd-r 10993 systemd-resolve   12u  IPv4 20901990      0t0  UDP localhost:domain 
 systemd-r 10993 systemd-resolve   13u  IPv4 20901991      0t0  TCP localhost:domain (LISTEN)

Vous pouvez également spécifier le type de connexion réseau. Par exemple, pour lister tous les ports TCP ouverts, vous pouvez utiliser :

lsof -i tcp

Pour trouver quel processus utilise un port spécifique, vous pouvez fournir le numéro de port :

lsof -i :<port_number>

Astuce bonus :Utiliser l'opérateur de négation avec lsof

Vous pouvez utiliser l'opérateur de négation pour exclure un utilisateur ou un processus lors de l'utilisation de la commande lsof.

Par exemple, vous souhaitez lister tous les fichiers ouverts par un utilisateur autre que root, utilisez-le de cette manière :

lsof -u ^root

La commande lsof devient encore plus utile lorsque vous l'utilisez avec la commande grep.

J'espère que vous avez appris quelque chose de nouveau avec cet article. Si vous avez des questions ou des suggestions, veuillez laisser un commentaire ci-dessous.


Linux
  1. 7 Exemples de commandes Linux df

  2. 8 Exemples de commandes Linux TR

  3. Exemples de commande rm sous Linux

  4. Exemples de commandes ps sous Linux

  5. w Exemples de commandes sous Linux

9 exemples de commande diff sous Linux

Commande Linux ip avec exemples

15 Commande Linux ps avec exemples

Commande lsof sous Linux (10 exemples)

Exemples de commandes id sous Linux

Commande lsof sous Linux avec exemples