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".
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.
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?
Type: décrit le type de fichier et son identification. Les valeurs sont les suivantes.
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 -uDerniè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 lsofinfo lsoflsof -?Apprécier!