Introduction à Lsof

Sous Linux, de nombreux objets sont considérés comme un fichier, que l'objet soit réellement un fichier, un périphérique, un répertoire ou un socket. Lister un fichier est facile, il y a le shell intégré lspour ça. Mais que se passe-t-il si un utilisateur souhaite voir quels fichiers sont actuellement ouverts par le processus du serveur Web? Ou si cet utilisateur voulait savoir quels fichiers sont ouverts dans un certain répertoire? C'est là lsofqu'entre en jeu. Imaginez lsofcomme un lsavec l'ajout de "fichiers ouverts".

Veuillez noter que bien que les BSD aient un utilitaire différent pour ce travail fstat, plusieurs autres versions d'Unix (Solaris, par exemple) possèdent également lsof. Les options et les indicateurs sont différents sur les autres plates-formes, ainsi que l'apparence de la sortie, mais généralement les connaissances de cet article devraient également leur être applicables.

Tout d'abord, examinons le format de la lsofsortie et comment elle doit être lue. La sortie habituelle de lsofsans aucun paramètre ressemblerait à ce qui suit. Cela a été coupé pour plus de lisibilité.

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

Ces colonnes signifient ce qui suit:

  • COMMAND - Processus auquel appartient un fichier ouvert, dans cet exemple, tout est lié init.
  • PID - Le numéro d'identification du processus dudit processus.
  • USER - L'utilisateur sous lequel le processus s'exécute. Car initc'est presque toujours root.
  • FD - Le descripteur de fichier du fichier, le plus courant étant:
    • cwd- Le répertoire de travail actuel (vous remarquerez peut-être la similitude avec la pwdcommande qui imprime le répertoire de travail actuel).
    • rtd - Le répertoire racine d'un processus.
    • txt- A text file, cela peut être soit un fichier de configuration lié au processus, soit le «code source» lié (ou appartenant) au processus.
    • mem - Un soi-disant "fichier mappé en mémoire", c'est-à-dire un segment de mémoire virtuelle (lire: RAM) qui a été affecté à un fichier.
    • Un nombre - le nombre représente le descripteur de fichier réel, le caractère après le nombre est le mode dans lequel le fichier est ouvert:
    • r - Lis.
    • w - Écrire.
    • u - Lire et écrire.
  • TYPE - Spécifie le type réel du fichier, les plus courants sont:
    • REG - Un fichier régulier.
    • DIR - Un annuaire.
    • FIFO - Premier entré, premier sorti.
  • DEVICE - Le numéro majeur et mineur du périphérique qui contient le fichier.
  • SIZE - La taille du fichier, en octets.
  • NODE - Le numéro d'inode du fichier.
  • NAME - Le nom du fichier.

Cela peut être un peu écrasant pour le moment, mais si vous travaillez lsofplusieurs fois, cela s'enfoncera rapidement dans votre cerveau.

Comme mentionné ci-dessus, la sortie de lsofa été raccourcie ici. Sans aucun argument ni filtre, lsofproduit des centaines de lignes de sortie qui ne vous laisseront que confus.

Il existe deux approches de base pour résoudre ce problème:

  • Utilisez une ou plusieurs des lsofoptions de ligne de commande pour affiner les résultats.
  • Par exemple, canalisez la sortie grep.

Bien que cette dernière option puisse sembler plus confortable car vous n'aurez pas à mémoriser les lsofoptions de ligne de commande, elle n'est généralement pas aussi flexible et efficace, nous allons donc nous en tenir à la première.

Imaginons que vous souhaitiez ouvrir un fichier avec votre éditeur de texte préféré, et que l'éditeur de texte vous indique qu'il ne peut être ouvert qu'en mode lecture seule car un autre programme y accède déjà. lsofvous aidera à découvrir qui est l'agresseur:

lsof /path/to/your/file

Cela produira une sortie similaire à ceci:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

Apparemment, vous avez oublié de fermer une session plus ancienne! Un problème très similaire se produit lorsque vous essayez de démonter un partage NFS et umountvous indique qu'il ne peut pas car quelque chose accède toujours au dossier monté. Encore une fois, lsofpeut vous aider à identifier le coupable:

lsof +D /path/to/your/directory/

Remarquez la barre oblique de fin, c'est important. Sinon lsof, vous supposerez que vous voulez dire un fichier normal. Ne soyez pas dérouté par l' +avant du drapeau - lsofa tellement d'options de ligne de commande dont il a besoin +en plus des plus courantes -. La sortie ressemblerait à ceci:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

Cela signifie que le processus mocp, avec le PID 5637, appartenant à l'utilisateur musica ouvert un fichier appelé RMS_GNU_SONG.ogg. Cependant, même après la fermeture de ce processus, il y a toujours un problème - le volume NFS ne peut pas être démonté.

lsofa un -cindicateur qui affiche les fichiers ouverts avec un nom de processus arbitraire.

lsof -c mocp

Cela produirait une sortie ressemblant à ceci:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

Dans cet exemple, il existe une autre instance d' mocpexécution qui vous empêche de démonter le partage. Après avoir arrêté ce processus, vous voulez vous assurer que l'utilisateur musicn'a aucun autre fichier potentiellement problématique ouvert. lsofa un -uindicateur pour afficher les fichiers ouverts par un utilisateur spécifique. N'oubliez pas qu'un fichier n'est pas toujours un fichier ordinaire sur votre disque dur!

lsof -u music

Vous pouvez également transmettre plusieurs utilisateurs, séparés par des virgules:

lsof -u music,moremusic

Une importante note sur le comportement par défaut lsof: les résultats sont OR à base, ce qui signifie que vous verrez les résultats de fichiers ouverts par des processus qui sont détenus soit par l'utilisateur musicou l'utilisateur moremusic. Si vous souhaitez voir les résultats correspondant aux processus appartenant aux deux utilisateurs, vous devez passer le drapeau -a:

lsof -au music, moremusic

Étant donné que les deux utilisateurs sont dans le groupe musicusers, vous pouvez également répertorier les fichiers en fonction du groupe:

lsof -g musicusers

Vous pouvez également combiner des indicateurs de ligne de commande:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

Dans la dernière ligne, nous avons ajouté un autre drapeau spécial - ^, qui représente un NON logique . Si la sortie est vide après avoir exécuté cette commande, le démontage réussira probablement.

Dans les exemples précédents, nous avons surtout regardé les fichiers réguliers. Qu'en est-il des sockets et des connexions réseau?

Pour répertorier toutes les connexions réseau actuelles, lsofle -idrapeau:

lsof -i

La sortie ressemble à ce que nous avons vu jusqu'à présent ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... sauf une différence: au lieu des noms de fichiers ou des répertoires, la colonne NAMEaffiche désormais les informations de connexion. Chaque connexion se compose des parties suivantes:

  • Protocole.
  • Nom d'hôte local.
  • Port source de la connexion.
  • Nom DNS de destination.
  • Le port de destination.
  • Statut de la connexion.

Comme avec de nombreux autres outils, vous pouvez désactiver la résolution des noms et ports DNS ( -net -P, respectivement). Le drapeau -iprend des paramètres supplémentaires. Vous pouvez spécifier d'afficher ou non tcp, udpou des icmpconnexions ou certains ports:

lsof -i :25
or
lsof -i :smtp

Encore une fois, les paramètres peuvent être combinés. L'exemple suivant ...

lsof -i tcp:80

... ne vous montrera que les connexions TCP utilisant le port 80. Vous pouvez également le combiner avec les options que vous connaissez déjà dans les fichiers "classiques":

lsof -a -u httpd -i tcp

Cela vous montrera toutes les connexions TCP ouvertes par l'utilisateur httpd. Notez l' -aindicateur, qui modifie le comportement par défaut de lsof(comme mentionné précédemment). Comme avec la plupart des outils de ligne de commande, vous pouvez aller très loin. Ce qui suit ne vous montrera que les connexions TCP dont l'état est "ÉTABLI":

lsof -i -s TCP:ESTABLISHED

À ce stade, vous devez avoir une compréhension de base du lsoffonctionnement, ainsi que des cas d'utilisation courants. Pour plus d'informations, consultez la page de manuel de lsofsur votre système.



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.