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

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Installation de McMyAdmin sur Ubuntu 14.10

Installation de McMyAdmin sur Ubuntu 14.10

McMyAdmin est un panneau de contrôle de serveur Minecraft utilisé pour administrer votre serveur. Bien que McMyAdmin soit gratuit, il existe plusieurs éditions, dont certaines sont pai

Configurer un serveur TeamTalk sous Linux

Configurer un serveur TeamTalk sous Linux

TeamTalk est un système de conférence qui permet aux utilisateurs davoir des conversations audio / vidéo de haute qualité, un chat textuel, de transférer des fichiers et de partager des écrans. Cest moi

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Comment installer et configurer CyberPanel sur votre serveur CentOS 7

Vous utilisez un système différent? Introduction CyberPanel est lun des premiers panneaux de contrôle du marché à la fois open source et utilisant OpenLiteSpeed. Quest-ce que

Installer phpBB avec Apache sur Ubuntu 16.04

Installer phpBB avec Apache sur Ubuntu 16.04

PhpBB est un programme de babillard open source. Cet article vous montrera comment installer phpBB sur un serveur Web Apache sur Ubuntu 16.04. Cétait écrit

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Configurer un utilisateur non root avec Sudo Access sur Ubuntu

Avoir un seul utilisateur, qui est root, peut être dangereux. Permet donc de résoudre ce problème. Vultr nous donne la liberté de faire ce que nous voulons avec nos utilisateurs et nos serveurs

Installer eSpeak sur CentOS 7

Installer eSpeak sur CentOS 7

Vous utilisez un système différent? ESpeak peut générer des fichiers audio de synthèse vocale (TTS). Ceux-ci peuvent être utiles pour de nombreuses raisons, telles que la création de votre propre Turin

Comment installer Thelia 2.3 sur CentOS 7

Comment installer Thelia 2.3 sur CentOS 7

Vous utilisez un système différent? Thelia est un outil open source pour la création de sites Web de commerce électronique et la gestion de contenu en ligne, écrit en PHP. Code source Thelia i

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Installation de Fuel CMS sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Fuel CMS est un système de gestion de contenu basé sur CodeIgniter. Son code source est hébergé sur GitHub. Ce guide vous montrera comment

Comment configurer loptimisation TCP sous Linux

Comment configurer loptimisation TCP sous Linux

Introduction Vous avez des problèmes de connectivité lorsque des visiteurs dautres pays accèdent à votre site Web? Vous vous demandez pourquoi la vitesse de téléchargement de votre Foreig

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer Pip sur Linux

Comment installer Pip sur Linux

Pip est un outil de gestion des packages Python. Lutilisation dun gestionnaire de packages permet une gestion efficace de votre serveur. Dans ce tutoriel, je vais expliquer comment t

Comment déployer Google BBR sur CentOS 7

Comment déployer Google BBR sur CentOS 7

BBR (Bottleneck Bandwidth and RTT) est un nouvel algorithme de contrôle de congestion qui est contribué à la pile TCP du noyau Linux par Google. Avec BBR en place,

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Comment installer Icinga 2 et Icinga Web 2 sur Ubuntu 16.04

Icinga 2 est un système de surveillance des ressources réseau open source largement utilisé, et Icinga Web 2 est linterface Web officielle pour Icinga 2. Dans ce didacticiel,

Comment installer YOURLS sur CentOS 7

Comment installer YOURLS sur CentOS 7

YOURLS (Your Own URL Shortener) est une application open source de raccourcissement dURL et danalyse de données. Dans cet article, nous couvrirons le processus dinstallation

Comment activer TLS 1.3 dans Apache sur Fedora 30

Comment activer TLS 1.3 dans Apache sur Fedora 30

Vous utilisez un système différent? TLS 1.3 est une version du protocole TLS (Transport Layer Security) qui a été publiée en 2018 en tant que norme proposée dans la RFC 8446

Configurer un Chroot sur Debian

Configurer un Chroot sur Debian

Cet article vous apprendra comment configurer une prison chroot sur Debian. Je suppose que vous utilisez Debian 7.x. Si vous utilisez Debian 6 ou 8, cela peut fonctionner, bu

Comment installer PiVPN sur Debian

Comment installer PiVPN sur Debian

Introduction Un moyen facile de configurer un serveur VPN sur Debian est avec PiVPN. PiVPN est un installateur et un wrapper pour OpenVPN. Il crée des commandes simples pour vous t

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Comment installer Alfresco Community Edition sur Ubuntu 16.04

Vous utilisez un système différent? Alfresco Community Edition est une version open source des services de contenu Alfresco. Il est écrit en Java et utilise PostgreSQL t

Configurer Nginx-RTMP sur CentOS 7

Configurer Nginx-RTMP sur CentOS 7

Vous utilisez un système différent? RTMP est idéal pour diffuser du contenu en direct. Lorsque RTMP est associé à FFmpeg, les flux peuvent être convertis en différentes qualités. Vultr i

Comment générer des clés SSH?

Comment générer des clés SSH?

Découvrez comment générer une clé SSH pour accéder à votre serveur sans mot de passe. Suivez nos étapes faciles à comprendre pour créer et ajouter des clés SSH.

Créer un serveur de messagerie avec hMailServer sous Windows

Créer un serveur de messagerie avec hMailServer sous Windows

Découvrez comment créer un serveur de messagerie avec hMailServer sous Windows pour recevoir des e-mails facilement.

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.