Commande Linux lsof

Linux 命令大全Encyclopédie des commandes Linux


Un puissant outil en ligne de commande utilisé pour lister tous les fichiers ouverts et les informations de processus associées sur le système actuel. Dans Linux, la philosophie « tout est un fichier » signifie que lsof peut afficher non seulement les fichiers ordinaires, mais aussi les connexions réseau, les fichiers de périphériques, les tubes, les sockets, etc.


Syntaxe de base de lsof

lsof [选项] [文件名或目录]

Descriptions des paramètres d'option courants

Option Description
-a Utiliser la logique AND pour combiner plusieurs conditions
-c <进程名> Afficher les fichiers ouverts par le processus spécifié
-d <文件描述符> Afficher les fichiers avec le descripteur de fichier spécifié
-i Afficher les informations relatives aux connexions réseau
-n Ne pas résoudre les noms d'hôtes (afficher les adresses IP)
-P Ne pas résoudre les noms de port (afficher les numéros de port)
-p <PID> Afficher les fichiers ouverts par l'ID de processus spécifié
-u <用户名> Afficher les fichiers ouverts par l'utilisateur spécifié
+D <目录> Afficher récursivement les fichiers ouverts sous le répertoire
-t Afficher uniquement les ID de processus (adapté aux scripts)

Exemples d'opérations courantes

1. Afficher tous les fichiers ouverts

lsof

Ceci liste tous les fichiers ouverts dans le système, y compris les fichiers réguliers, les répertoires, les fichiers de bibliothèque, les périphériques, les connexions réseau, etc.

2. Afficher les fichiers ouverts par un processus spécifié

Exemple

lsof -p 1234  # Afficher les fichiers ouverts par le processus avec le PID 1234
lsof -c nginx # Afficher les fichiers ouverts par tous les processus nginx

3. Afficher les connexions réseau

Exemple

lsof -i      # Afficher toutes les connexions réseau
lsof -i :80  # Afficher toutes les connexions utilisant le port 80
lsof -i TCP  # Afficher toutes les connexions TCP

4. Afficher les fichiers ouverts par un utilisateur

lsof -u root  # 查看 root 用户打开的文件

5. Rechercher les fichiers supprimés mais toujours occupés par des processus

lsof | grep deleted

Cette situation se produit souvent lorsque des fichiers journaux sont supprimés mais que le service est toujours en cours d'exécution, ce qui empêche l'espace disque d'être libéré.

6. Afficher les fichiers ouverts dans un répertoire spécifié

lsof +D /var/log  # 查看 /var/log 目录下被打开的文件

Explication des champs de sortie

Les colonnes typiques de la sortie de la commande lsof sont les suivantes :

COMMAND    PID   USER   FD      TYPE     DEVICE  SIZE/OFF    NODE NAME
  • COMMAND: nom du processus
  • PID: ID du processus
  • USER: Utilisateur exécutant le processus
  • FD: Descripteur de fichier
    • cwd: Répertoire de travail actuel
    • txt: Fichier de code du programme
    • mem: Fichier mappé en mémoire
    • 0u、1u、2u: Entrée standard, sortie standard, erreur standard
  • TYPE: Type de fichier (REG fichier régulier, DIR répertoire, CHR périphérique caractère, etc.)
  • DEVICE: Numéro de périphérique
  • SIZE/OFF: Taille du fichier ou décalage
  • NODE: Numéro d'inode du fichier
  • NAME: Nom de fichier ou point de montage

Cas d'utilisation avancés

1. Trouver les processus occupant un port

lsof -i :8080

Lorsque vous voulez démarrer un service mais que le port est déjà occupé, cette commande peut rapidement trouver le processus qui occupe le port.

2. Récupérer des fichiers supprimés

Lorsqu'un fichier est supprimé mais encore utilisé par un processus, il peut être récupéré via le système de fichiers /proc :

Exemple

lsof | grep deleted  # Trouver le fichier supprimé et le processus
ls -l /proc//fd  # Afficher les descripteurs de fichiers du processus
cp /proc//fd/ /path/to/recovery  # Récupérer le fichier

3. Surveiller l'accès aux fichiers

watch -n 1 'lsof /path/to/file'

Cela permet de surveiller en temps réel quels processus accèdent à un certain fichier.


Solutions aux problèmes courants

1. Espace disque insuffisant mais impossible de trouver les fichiers volumineux

lsof | grep deleted

Trouvez les fichiers supprimés mais toujours occupés par des processus, puis redémarrez les processus concernés pour libérer de l'espace.

2. Impossible de démonter le périphérique

lsof /mount/point

Trouvez quels processus utilisent le point de montage, fermez ces processus, puis démontez.

3. Dépannage des problèmes de connexion réseau

lsof -i -n -P

Affichez toutes les connexions réseau pour aider à résoudre les conflits de ports ou les problèmes de connexion.


Considérations de performance

Bien que lsof soit puissant, vous devez être prudent lorsque vous l'utilisez dans un environnement de production chargé :

  1. Une exécution directelsofanalysera l'ensemble du système et risque de consommer beaucoup de ressources
  2. Essayez d'utiliser des conditions de filtrage précises (telles que-p、-u、-ietc.) pour restreindre la portée de la requête
  3. Lors de l'utilisation dans des scripts,-tl'option n'affiche que le PID, ce qui réduit la surcharge d'analyse.

Outils alternatifs

Bien que lsof soit l'outil le plus couramment utilisé, certaines alternatives peuvent être envisagées dans certains scénarios :

  1. fuser: Afficher rapidement quels processus utilisent un fichier ou une socket spécifique
  2. ss/netstat: Spécifiquement pour les informations de connexion réseau
  3. ps: combiné avec/procle système de fichiers peut également obtenir certaines informations.

Résumé

lsof est le couteau suisse pour les administrateurs système et les développeurs Linux. Le maîtriser peut vous aider à :

  1. Localiser rapidement les problèmes d'occupation des ressources
  2. Résoudre les problèmes liés aux fichiers et au réseau
  3. Comprendre l'état de fonctionnement du système
  4. Résoudre divers problèmes de "fichier en cours d'utilisation"

Il est recommandé de pratiquer davantage dans le travail quotidien, d'utiliser de manière flexible divers paramètres d'option selon des scénarios spécifiques, et de maîtriser progressivement tout le potentiel de cet outil puissant.


Linux 命令大全Encyclopédie des commandes Linux

Autres extensions