Présentation
 Le lsof  commande signifie LiSt Open Files et montre les fichiers ouverts et quel processus les utilise. Étant donné que Linux considère chaque objet comme un fichier, tel que les périphériques, les répertoires, etc., les fichiers ouverts non identifiés empêchent les utilisateurs de les modifier.
 De plus, le grand nombre de fichiers rend difficile la recherche de processus malveillants. Le lsof  La commande permet d'identifier ces processus afin que vous puissiez les terminer. 
Cet article explique comment utiliser le Commande lsof sous Linux avec des exemples.
 Prérequis
- Accès au terminal.
 - Privilèges de groupe Sudo.
 - Privilèges root pour certaines commandes.
 
Syntaxe de commande lsof
 Le lsof  la syntaxe de la commande est :
lsof [options]  
 Remarque : Pour la plupart des commandes, exécutez lsof  avec sudo   pour éviter les erreurs "autorisation refusée".
Options de commande lsof
 Le lsof  La commande a de nombreuses options. Le tableau ci-dessous répertorie les arguments les plus utilisés :
| Option | Description | 
|---|---|
lsof   |  Répertorie tous les fichiers ouverts. | 
-b   |  Supprime les blocs du noyau. | 
/ [file system] /   |  Affiche les fichiers ouverts dans un système de fichiers particulier. | 
/dev/tty*   |  Affiche les fichiers associés au terminal. | 
-u [username]   |  Imprime tous les fichiers ouverts par un utilisateur. | 
-u ^[username]   |  Imprime tous les fichiers ouverts par tout le monde sauf un utilisateur spécifique. | 
-c [process]   |  Répertorie tous les fichiers auxquels un processus particulier a accédé. | 
-p [process ID]   |  Affiche tous les fichiers ouverts associés à un ID de processus spécifique. | 
-p ^[process ID]   |  Affiche les fichiers ouverts par tous les autres PID. | 
-R   |  Répertorie les ID de processus parent. | 
+D [directory path]   |  Imprime tous les fichiers ouverts dans un répertoire. | 
-i   |  Affiche tous les fichiers accessibles par les connexions réseau. | 
-i [IP version number]   |  Filtrer les fichiers en fonction de leur IP. | 
- i [udp or tcp]   |  Filtre les fichiers ouverts en fonction du type de connexion (TCP ou UDP). | 
-i :[port number]   |  Recherche les processus en cours d'exécution sur un port spécifique. | 
-i :[port range]   |  Recherche les processus exécutés sur des plages de ports spécifiques. | 
-t [file name]   |  Répertorie les ID des processus qui ont accédé à un fichier particulier. | 
# kill -9 'lsof -t -u [user]  ' |  Tue tous les processus utilisateur. | 
-d mem   |  Affiche tous les fichiers mappés en mémoire. | 
[path] | grep deleted   |  Imprime les fichiers supprimés verrouillés. | 
man   |  Ouvre la page de manuel. | 
Exemples de commandes lsof
 lsof  intègre différents arguments permettant aux utilisateurs de gérer les activités d'administration système et réseau. Vous trouverez ci-dessous les lsof les plus courants  cas d'utilisation.
Répertorier tous les fichiers
 Lorsqu'il est exécuté sans aucune option, lsof  répertorie tous les fichiers ouverts par n'importe quel processus :
sudo lsof 
 
 Le lsof  La commande affiche beaucoup de détails. Par conséquent, saisissez toujours lsof  avec less  pour afficher la sortie une page à la fois.
sudo lsof | less 
 Pour naviguer vers le bas de la liste, appuyez sur Entrée ou flèche vers le bas . Quittez la liste avec Q .
 Le lsof  la sortie se compose de différentes colonnes. Cependant, toutes les colonnes ne s'appliquent pas à tous les types de fichiers. L'en-tête ressemble à ceci :
 
 Les colonnes par défaut dans le lsof  sortie sont :
- COMMANDE - Fait référence à la commande associée au processus qui a ouvert le fichier.
 - PID - Le numéro d'identification du processus exécutant le fichier.
 - TID - Représente un numéro d'identification de tâche pour le processus respectif. Il est vide si un processus, et non une tâche, a ouvert le fichier.
 - TASKCMD - Fait référence au nom de la commande dans la première colonne. Cependant, TASKCMD peut différer lorsqu'une tâche change son nom de commande.
 - UTILISATEUR - Nomme l'utilisateur exécutant le processus. La colonne contient l'ID ou le nom de l'utilisateur.
 - FD - Est le descripteur de fichier que le processus utilise pour s'associer au fichier.
 - TYPE - Indique le type de fichier et son numéro d'identification.
 - APPAREIL - Imprime les numéros de périphérique liés au fichier.
 - TAILLE/OFF - Représente la valeur ou le fichier pris lors de l'exécution (taille ou décalage).
 - NOEUD - Le numéro de nœud du fichier local ou le numéro d'inode du répertoire/répertoire parent.
 - NOM - Affiche le chemin ou le lien vers le fichier.
 
Dissimuler les blocs de noyau
 Le lsof par défaut  la sortie inclut également les fichiers ouverts par le noyau. Pour supprimer les blocs du noyau, exécutez lsof  avec le -b  drapeau :
sudo lsof -b 
 Afficher les fichiers d'un système de fichiers spécifique
 Utilisez le lsof  commande pour afficher les fichiers ouverts dans un système de fichiers particulier :
sudo lsof / [file system] / 
 Par exemple, pour voir tous les fichiers ouverts dans le sys  répertoire, exécutez :
sudo lsof / sys/ 
 Imprimer les fichiers du terminal
 Lister tous les fichiers ouverts connectés au terminal en ciblant le dev  répertoire avec lsof  :
lsof /dev/tty* 
 Afficher tous les fichiers auxquels un utilisateur a accédé
 Utilisez lsof  avec un -u  drapeau pour afficher les fichiers ouverts par un utilisateur spécifique :
sudo lsof -u [username] Par exemple :
lsof -u saraz 
 La commande liste les fichiers ouverts par saraz .
Pour imprimer tous les fichiers ouverts par tout le monde sauf un utilisateur spécifique, exécutez :
sudo lsof -u ^[username] Par exemple :
lsof -u ^saraz 
 La sortie affiche les fichiers contrôlés par des utilisateurs autres que saraz .
Afficher les fichiers utilisés par un processus
 Le -c  flag ouvre tous les fichiers utilisés par un processus :
sudo lsof -c [process] 
 Par exemple, pour lister les fichiers ouverts par le wpa_suppl  processus, exécutez :
sudo lsof -c wpa_suppl 
 Une autre option consiste à n'utiliser qu'une partie du nom du programme :
sudo lsof -c wpa 
 
 lsof  renvoie tous les programmes commençant par le terme wpa  , qui inclut  wpa_suppl .
 De plus, le -c  l'option donne la même sortie que la tuyauterie lsof  avec grep :
sudo lsof | grep wpa_suppl 
 Imprimer les fichiers ouverts par un PID spécifique
 Utilisez le -p  option pour filtrer des fichiers spécifiques par le numéro d'identification de processus (PID). Par exemple, la sortie ci-dessous montre tous les fichiers avec le PID 635.
sudo lsof -p 635 
 
 D'autre part, ajoutez un caret ^  symbole pour imprimer les fichiers ouverts par tous les autres processus :
sudo lsof -p ^635 
 
 De plus, en combinant lsof  avec le -R  ajoute le numéro d'identification du processus parent (PPID) à la sortie.
Pour obtenir des informations PPID pour un PID spécifique, exécutez :
sudo lsof -p [PID] -R Par exemple, pour obtenir le PPID du 635 PID, tapez :
sudo lsof -p 635 -R 
 La sortie affiche la colonne PPID ajoutée à l'en-tête.
Afficher les fichiers sous un répertoire
Pour voir tous les fichiers qui ont été ouverts sous un répertoire, utilisez la commande suivante :
sudo lsof +D [directory path] 
 
 Cette option parcourt également les sous-répertoires. Pour éviter la récurrence, utilisez le +d  drapeau. 
Afficher les fichiers accessibles par les connexions réseau
 Utilisez le -i  indicateur avec lsof  pour vérifier quels fichiers sont ouverts par une connexion réseau. Exécutez cette commande :
sudo lsof -i 
 L'exemple ci-dessus imprime les fichiers ouverts par une connexion réseau, quel que soit le type de connexion.
 Le -i  flag ajoute beaucoup de polyvalence à lsof  , permettant aux utilisateurs de filtrer les fichiers en fonction de différents critères. Utilisez lsof -i [options]  à :
- Filtrer les fichiers en fonction de leur adresse IP avec :
 
sudo lsof -i [IP version number] Par exemple, exécutez cette commande pour afficher uniquement les fichiers IPv4 :
sudo lsof -i 4 
 Au contraire, imprimez uniquement les fichiers IPv6 avec :
sudo lsof -i  6 
 - Afficher uniquement les fichiers qui utilisent tcp ou udp connexion en indiquant le type de protocole :
 
sudo lsof -i [udp or tcp] 
 - Rechercher les processus en cours d'exécution sur un port spécifique . Cette option est utile pour vérifier quel fichier empêche une autre application de se lier à un port spécifique. Exécutez la commande avec le numéro de port ou le nom du service dans la colonne du nom :
 
sudo lsof -i :[port number/name] 
 - Imprimer tous les fichiers ouverts sur des plages de ports spécifiques .
 
Par exemple, pour répertorier les fichiers ouverts des plages de ports UDP 1-1024, exécutez :
 Répertorier les ID des processus contenant des fichiers ouverts
 Pour voir les PID des processus qui ont ouvert un fichier particulier, utilisez -t  et indiquez le nom du fichier.
lsof -t [file name] 
 Tuer tous les processus de l'utilisateur
 Le -t  flag tue également tous les processus d'un utilisateur spécifique. Par exemple, pour tuer tous les processus par l'utilisateur notsara , exécutez cette commande en tant que root :
# kill -9 'lsof -t -u notsara' 
 Imprimer tous les fichiers mappés en mémoire
 lsof  imprime quels processus ont des fichiers mappés en mémoire. Pour afficher ces processus, exécutez :
 lsof -d mem 
 Afficher les fichiers supprimés verrouillés
 Un processus garde parfois de gros fichiers verrouillés même après leur suppression, ce qui consomme de l'espace disque. 
 Utilisez Lsof  pour rechercher des fichiers supprimés sous Linux mais toujours verrouillés par un ou plusieurs processus. 
 Par exemple, recherchez les fichiers supprimés du répertoire racine à l'aide d'une barre oblique (/  ) comme symbole de chemin :
sudo lsof [path] | grep deleted 
 Combiner plusieurs options
 Le lsof  La commande autorise plusieurs éléments de recherche sur la ligne de commande. Utilisez ET et OU logique pour combiner différents arguments pour obtenir des résultats spécifiques. Vous trouverez ci-dessous les exemples les plus courants.
- Répertorier les fichiers ouverts par un utilisateur particulier ou traiter avec :
 
sudo lsof -u [username] -c [process] 
 La sortie imprime les deux fichiers ouverts par l'utilisateur saraz et ceux utilisés par le processus snapd .
- Afficher uniquement les fichiers correspondant au premier terme de recherche et au second terme de recherche avec l'opérateur logique 
-a(et) : 
sudo lsof -u [username] -c [process] -a 
 
 Dans ce cas, lsof  affiche uniquement les fichiers ouverts par l'utilisateur saraz et le bash processus.
- Rechercher toutes les connexions réseau d'un utilisateur :
 
sudo lsof -i -u [username] -a 
 
 Le -i  et -a    drapeaux avec le lsof  commande imprimer toutes les activités de l'utilisateur root .
En savoir plus sur lsof
 Le lsof  La commande a plus d'options que toute autre commande Linux. Le man  La page compte près de 2000 lignes et offre beaucoup d'informations.
Pour explorer les possibilités de la commande, exécutez :
man lsof 
 Conclusion
 Ce tutoriel vous montre comment utiliser le lsof    pour résoudre les problèmes potentiels de sécurité et de système avec des exemples pratiques.
Ensuite, apprenez à copier des fichiers et des répertoires sous Linux et à comparer deux fichiers à l'aide de la commande Linux diff.