Commande Linux LSOF

Commande Linux LSOF
L'outil de commande «LSOF» dans Linux est l'un des nombreux outils intégrés qui est super utile pour consulter la «liste des fichiers ouverts». Oui, le terme «lsof» est l'abréviation de la tâche.

Il existe un certain nombre de processus exécutés dans le système tout le temps, accédant à différents fichiers du système. Ces fichiers pourraient être des fichiers de disque, des scripts, des prises de réseau, des appareils, des tuyaux nommés et autres. En utilisant «lsof», il est possible d'effectuer beaucoup de choses, comme le débogage. Il est également très utile pour les administrateurs système afin de déterminer quels fichiers sont accessibles par quels processus. L'un des scénarios les plus utiles que j'ai trouvé est lorsque vous êtes sur le point de déclencher un système de fichiers, mais il est toujours accessible.

Sans plus tarder, commençons par «lsof»! Je suppose que votre système UNIX / Linux actuel a déjà installé "LSOF".

Emplacement

quel lsof

Cela rapporte le chemin complet de la commande, dans ce cas, «LSOF».

Version «lsof»
lsof -v

Cela rapportera des informations de version approfondie de «LSOF», y compris la date de construction du binaire, la version du compilateur, les drapeaux du compilateur et autres.

Utilisation de base «LSOF»

Exécuter «lsof» seul.

lsof

Cela rapporte une grande liste de tous les fichiers accessibles par le système au moment de l'exécution de la commande.

Bien que tous les champs soient explicites, se confondent principalement sur les colonnes «FD» et «Type» et leurs valeurs. Voyons-les.

FD: Abréviation de «Descripteur de fichiers». Il vient avec les valeurs suivantes.

  • CWD: répertoire de travail actuel
  • RTD: répertoire racine
  • TXT: texte du programme (données, code et autres)
  • MEM: fichier mappé de mémoire
  • ERR: Erreur d'information FD
  • MMAP: périphérique mappé par la mémoire
  • LTX: Texte de bibliothèque partagée (données et code)
  • M86: DOS Merge Mapted File

Il y a aussi d'autres valeurs que vous remarquerez dans la colonne, comme «1U» suivie de U, R, W, etc. valeur. Qu'est-ce que cela signifie?

  • R: Accès en lecture
  • W: accès en écriture
  • U: Lisez et écrivez un accès
  • - : Mode inconnu et il contient un caractère de verrouillage
  • ": Le mode est inconnu et il n'y a pas de caractère de verrouillage

Type: décrit le type de fichier et son identification. Les valeurs sont les suivantes.

  • Dir: répertoire
  • Chr: Fichier spécial du caractère
  • Reg: fichier régulier
  • FIFO: Premier dans, première sortie

Fichiers ouverts spécifiques à l'utilisateur

Linux est une brillante plate-forme multi-utilisateurs. Plusieurs utilisateurs peuvent accéder au système en même temps et effectuer des opérations pour lesquelles ils ont la permission.

Pour consulter les fichiers accessibles par un certain utilisateur, exécutez la commande suivante.

lsof -u

Cependant, pour vérifier les utilisateurs avec un rang plus élevé, «LSOF» aura besoin d'un privilège «SuperUser».

sudo lsof -u

Que diriez-vous de vérifier toutes les commandes et les fichiers à laquelle un certain utilisateur accéde? Exécutez le suivant.

lsof -i -u

Encore une fois, pour les utilisateurs avec un rang plus élevé, «LSOF» aura besoin du privilège «SuperUser».

sudo lsof -i -u

Processus de fonctionnement spécifiques au port

Pour découvrir tous les processus qui utilisent actuellement un certain port, appelez «LSOF» avec le drapeau «-i» suivi du protocole et des informations de port.

lsof -i<46><@hostname|host_address>
:

Par exemple, pour consulter tous les programmes accédant actuellement au port 80 sur le protocole TCP / IP, exécutez la commande suivante.

lsof -i tcp: 80

Cette méthode peut également être utilisée pour montrer tous les processus qui utilisent des ports dans une certaine plage, par exemple, 1 à 1000. La structure de commande est similaire à un peu de magie à la partie du numéro de port.

lsof -i tcp: 1-1000

Processus spécifiques au protocole

Voici 2 exemples montrant les processus qui utilisent actuellement les protocoles IPv4 et IPv6.

lsof -i 4
lsof -i 6

Listing des connexions réseau

La commande suivante rapportera toutes les connexions réseau à partir du système actuel.

lsof -i

À l'exclusion avec ^

Oui, nous pouvons exclure l'utilisateur, le port, le port, FD et d'autres spécifiques en utilisant le caractère «^». Tout ce que vous avez à faire est de l'utiliser avec prudence pour ne pas gâcher toute la sortie.

Dans cet exemple, excluons tous les processus de l'utilisateur «racine».

lsof -u ^ racine

Il existe d'autres façons d'utiliser ce mécanisme excluant avec «LSOF», par exemple, avec les drapeaux comme «-c», «-d» etc. Tous les drapeaux ne soutiennent pas ce mécanisme. C'est pourquoi je recommande d'essayer une démo avec cette méthode avec n'importe quel indicateur avant de l'implémenter dans certains scripts.

Recherche de PID

PID est une propriété importante de tout processus en cours d'exécution sur le système. Il permet de trouver plus fin à un certain processus. Le nom de processus n'est pas très utile dans de nombreuses situations car le même binaire peut créer des copies de lui-même et effectuer une tâche différente en parallèle.

Si vous ne savez pas comment obtenir le PID d'un processus, utilisez simplement «PS» pour répertorier tous les processus en cours et filtrer la sortie en utilisant «Grep» avec le nom de processus et / ou les commandes.

ps -a

Maintenant, effectuez le filtrage à l'aide de «grep».

PS -A | grep

Maintenant, consultez quels fichiers qui accédent PID.

lsof -p

Listing des fichiers ouverts pour un appareil spécifique

La fonctionnalité de «LSOF» ne se limite pas à ces fonctions. Vous pouvez également filtrer le résultat de «LSOF» par la base de l'appareil. À cette fin, la commande ressemblera à ceci.

lsof

Cette commande est super utile pour découvrir tous les processus en cours d'exécution avec leurs informations de propriétaire accès à un système de fichiers particulier. Si vous rencontrez du mal à ne pas mettre en œuvre un système de fichiers, c'est la meilleure façon de procéder.

lsof

Liste des fichiers ouverts dans un répertoire

Semblable à l'exemple précédent, passez simplement le chemin du répertoire vers «LSOF» pour savoir si un processus y accéde.

Remarque: «LSOF» vérifiera le répertoire récursivement, donc cela peut prendre du temps.

= lsof + d

Bonus: terminer toute activité utilisateur

Soyez extrêmement prudent avec cette partie car elle peut simplement gâcher tout ce qu'un utilisateur fait. La commande suivante tuera tous les processus en cours d'exécution d'un utilisateur.

sudo kill -9 'lsof -t -u

Dernières pensées

Les fonctionnalités de «lsof» ne s'arrêtent pas seulement ici. Ceux mentionnés ici sont ceux dont nous aurons le plus besoin au quotidien. Il existe de nombreuses autres fonctionnalités de «LSOF» qui peuvent être utiles (dans des cas spécifiques, bien sûr).

Pour toutes les fonctionnalités disponibles et leur utilisation, consultez l'homme et les pages d'informations de «LSOF».

homme lsof
info lsof
lsof -?

Apprécier!