GNU/Linux >> Tutoriels Linux >  >> Linux

Commande lsof sous Linux avec exemples

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] à :

  1. 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
  1. Afficher uniquement les fichiers qui utilisent tcp ou udp connexion en indiquant le type de protocole :
sudo lsof -i [udp or tcp]
  1. 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]
  1. 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.

  1. 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 .

  1. 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.

  1. 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.


Linux
  1. Commande Linux wc avec exemples

  2. Commande Linux Tee avec exemples

  3. Commande JQ sous Linux avec exemples

  4. 7 Exemples de commande lsof sous Linux

  5. Commande Linux rsync avec des exemples pratiques

15 Commande Linux ps avec exemples

Commande de recherche Linux avec des exemples pratiques

Commande lsof sous Linux (10 exemples)

Commande IP Linux avec exemples

Tutoriel sur la commande de recherche Linux (avec exemples)

Commande comm Linux avec exemples