Sous Linux, tout est considéré comme des fichiers et organisé dans des répertoires. lsof (Liste des fichiers ouverts) affiche une liste des fichiers ouverts. Il aide principalement à trouver les informations sur le processus qui a ouvert les fichiers. Outre les fichiers, il peut répertorier un répertoire, un fichier spécial de bloc, une bibliothèque partagée, un fichier spécial de caractère, un canal normal, un canal nommé, un socket Internet, un socket de domaine UNIX et bien d’autres.
Dans ce tutoriel, nous apprenons commande lsof dans Linux en utilisant facile à comprendre exemples.
commande lsof
La commande lsof par défaut est disponible dans la plupart des distributions Linux. Très souvent, la commande lsof est utilisée lorsque nous ne sommes pas en mesure de démonter un disque, puis la commande lsof aide à trouver le fichier ouvert et son processus à l’origine.
Syntaxe:
lsof [options] [names]
La syntaxe ci-dessus listera tous les fichiers qui ont été ouverts par tous les processus du système.
1. Lister tous les fichiers ouverts
Pour obtenir rapidement une liste des fichiers ouverts, tapez lsof. Il répertorie tous les fichiers qui ont été ouverts par les différents processus du système.
$ lsof
Normalement, la sortie sera très longue, vous utilisez $ sudo lsof | more
, si vous souhaitez afficher le contenu un écran à la fois.
2. Lister les fichiers ouverts par nom d’utilisateur
lsof a une commande qui peut être utilisée pour trouver une liste de fichiers spécifiques ouverts par un utilisateur spécifique.
À lister les fichiers ouverts par un nom d’utilisateur utilisez la commande suivante :
$ lsof -u bobbin

Pour plusieurs utilisateurs, utilisez la syntaxe suivante :
$ lsof -u [username1] -u [username2]
OU
$ lsof -u [username1], [username2]
Pour lister les fichiers ouverts à l’exception de certains utilisateurs :
$ lsof -u ^root
Pour lister uniquement l’ID de processus, utilisez le -t
option.
$ lsof -t -u sonar
Cela sera utile au cas où vous auriez besoin de tuer tous les processus liés à une utilisation spécifique.
$ kill -9 lsof -t -u sonar
3. Lister les fichiers ouverts par processus
lsof peut également être utilisé pour lister les fichiers ouverts par un processus spécifique en utilisant le -c
option suivie du nom du processus.
Pour example pour lister tous les fichiers ouverts par ssh :
$ lsof -c ssh

4. Lister les fichiers ouverts par nom de fichier
Nous pouvons spécifier le nom de fichier comme argument pour lister tous les processus qui ont ouvert un fichier spécifique.
Pour lister tous les processus ouverts par le fichier /var/log/messages, tapez :
$ lsof /var/log/messages

5. Liste des fichiers ouverts par ID de processus
Chaque fichier se voit attribuer un ID de processus. Un seul processus peut ouvrir un grand nombre de fichiers. Nous pouvons utiliser la commande lsof pour répertorier tous les fichiers ouverts pour un ID de processus donné.
Pour example pour lister les fichiers ouverts avec l’ID de processus 2, tapez :
$ lsof -p 2

Incase pour lister les fichiers ouverts pour plusieurs ID de processus, tapez
$ lsof -p 2,3
Un système contient un grand nombre de processus, dont chacun a des fichiers ouverts à l’utilisation. Un processus peut avoir de nombreux processus enfants, et ce processus est également appelé processus parent.
La commande lsof est utilisée avec le -R
option pour obtenir une liste des fichiers ouverts par PPID (Parent Process IDentification).
$ lsof -R

Vous pouvez à partir de la sortie la 5ème colonne afficher le PPID des fichiers ouverts.
Pour trouver le PPID d’un PID spécifique, tapez :
$ lsof -p [PID] -R
6. Lister les fichiers ouverts dans un répertoire
Pour lister les fichiers ouverts dans un répertoire spécifique, nous pouvons utiliser la commande lsof.
Utiliser +d
option pour afficher une liste des fichiers ouverts dans le répertoire fourni, cependant, il ne va pas dans les sous-répertoires.
Ce qui suit example recherche les fichiers ouverts dans le répertoire /var/log :
$ lsof +d /var/log

L’option +D commande à lsof de rechercher dans toute la profondeur du répertoire toutes les instances ouvertes ainsi que tous les fichiers et répertoires qu’il contient.
Dans ce cas, lsof recherche les fichiers ouverts dans /var/log et ses sous-répertoires :
$ lsof +D /var/log

7. Lister les fichiers ouverts avec le protocole réseau
Un système peut être relié à divers réseaux à diverses fins. Tout dans Linux est un fichier, nous pouvons examiner les fichiers qui sont ouverts par une connexion réseau dans le système.
Pour lister les fichiers ouverts dans le protocole TCP, nous pouvons exécuter la commande suivante.
$ lsof -i TCP

Pour lister les fichiers ouverts dans le protocole UDP, nous pouvons exécuter la commande suivante.
$ sudo lsof -i UDP

8. Lister les fichiers ouverts par numéro de port
lsof a une commande qui répertorie spécifiquement les fichiers ouverts sur un numéro de port donné pour répertorier tous les processus en cours d’exécution sur ce port.
Pour example pour lister les fichiers ouverts sur le numéro de port 443
$ lsof -i :443

Vous pouvez répertorier les fichiers ouverts pour plusieurs numéros de ports comme suit :
$ lsof -i :80,443
Vous pouvez également lister les fichiers ouverts de TCP ou UDP par plages de ports.
$ lsof -i TCP:1-49151
9. Lister les fichiers ouverts par IPv4/IPv6
Il existe une option dans lsof pour lister les fichiers réseau IPv4 ou IPv6 ouverts.
Pour afficher les fichiers ouverts IPv4, tapez
$ lsof -i4

La syntaxe suivante peut être utilisée pour afficher les fichiers ouverts IPv6 :
$ lsof -i6
10. Exécutez lsof en continu
Le mode de répétition permet à lsof de répéter continuellement avec des mises à jour avec des délais spécifiés. Le mode de répétition peut être activé en utilisant l’option ‘-r’ ou ‘+r’, où ‘+r’ se terminera lorsqu’aucun fichier ouvert n’est trouvé et ‘-r’ continuera à lister jusqu’à ce qu’une interruption manuelle soit lancée. Chaque sortie de cycle de retard sera séparée en utilisant ‘========’.
Syntaxe:
$ lsof [options] -r/+r[time-interval]
Pour example:
$ lsof -u sonar -r5
en-têtes de commande lsof
le lsof
a plusieurs colonnes.
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
Le nom de la commande UNIX associée au processus est stocké dans le COMMAND
colonne.
le PID
affiche l’ID de processus de la commande.
le USER
affiche le nom de l’utilisateur associé au processus suivant.
le TID
affiche l’ID de la tâche.
le FD
est un descripteur de fichier qui inclut des abréviations telles que cwd (répertoire de travail actuel), txt (fichiers texte), mem (fichier mappé en mémoire), rtd (répertoire racine) et bien d’autres.
TYPE
est l’abréviation d’un type de fichier spécifique, tel que REG (fichier régulier), DIR (répertoire), CHR (fichier spécial de caractère), etc.
le DEVICE
contient les numéros d’appareil.
le SIZE/OFF
contient la taille du fichier ou l’offset du fichier en octets.
le NODE
la valeur de la colonne représente le numéro de nœud d’un fichier local.
le NAME
affiche le nom du point de montage et du système de fichiers du fichier, ainsi que l’adresse Internet.
Conclusion
Dans ce tutoriel, nous avons découvert la commande lsof et ses utilisations avec des exemples. lsof fournit un certain nombre d’options pour personnaliser sa sortie afin de répondre à vos besoins. Il vous permet de combiner facilement et rapidement plusieurs arguments pour obtenir la sortie requise.