logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

lsof - lister les fichiers ouverts

Introduction

lsof est une commande très utile pour retrouver quel utilisateur ou quel programme utilise quels fichiers. Or dans linux , “tout est fichier” ( périphériques, dossiers, … et même les “sockets” des connexions réseau. Cet outil permet donc de facilement surveiller les activités d'un programme : qui l'utilise, quels fichiers utilise-t-il, utilise-t-il le réseau etc…

Installation

apt-get update && apt-get install lsof

.

Utilisation

Options de lsof :

lsof --help

affiche un bref résumé des options:

retour de la commande
lsof 4.86
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Defaults in parentheses; comma-separated set (s) items; dash-separated ranges.
  -?|-h list help          -a AND selections (OR)     -b avoid kernel blocks
  -c c  cmd c ^c /c/[bix]  +c w  COMMAND width (9)    +d s  dir s files
  -d s  select by FD set   +D D  dir D tree *SLOW?*   +|-e s  exempt s *RISKY*
  -i select IPv[46] files  -K list tasKs              -l list UID numbers
  -n no host names         -N select NFS files        -o list file offset
  -O no overhead *RISKY*   -P no port names           -R list paRent PID
  -s list file size        -t terse listing           -T disable TCP/TPI info
  -U select Unix socket    -v list version info       -V verbose search
  +|-w  Warnings (+)       -X skip TCP&UDP* files     -- end option scan
  +f|-f  +filesystem or -file names     +|-f[gG] flaGs 
  -F [f] select fields; -F? for help  
  +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)
                                        +m [m] use|create mount supplement
  +|-M   portMap registration (-)       -o o   o 0t offset digits (8)
  -p s   exclude(^)|select PIDs         -S [t] t second stat timeout (15)
  -T qs TCP/TPI Q,St (s) info
  -g [s] exclude(^)|select and print process group IDs
  -i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]
  +|-r [t[m<fmt>]] repeat every t seconds (15);  + until no files, - forever.
       An optional suffix to t is m<fmt>; m must separate t from <fmt> and
      <fmt> is an strftime(3) format for the marker line.
  -s p:s  exclude(^)|select protocol (p = TCP|UDP) states by name(s).
  -u s   exclude(^)|select login|UID set s
  -x [fl] cross over +d|+D File systems or symbolic Links
  names  select named files or files on named file systems
Anyone can list all files; /dev warnings disabled; kernel ID check disabled.

Manuel complet :

man lsof

ou version française : ici

l'affichage

Appelé seule, lsof liste tous les fichiers ouverts appartenant à tous les processus actifs:

lsof
retour de la commande
COMMAND    PID  TID        USER   FD      TYPE     DEVICE SIZE/OFF       NODE NAME
init         1             root  cwd       DIR      254,0     4096          2 /
init         1             root  rtd       DIR      254,0     4096          2 /
init         1             root  txt       REG      254,0    35216       4522 /sbin/init
[...]
lsof      3378             root    6r     FIFO        0,8      0t0      12855 pipe
lsof      3379             root  cwd       DIR      254,2     4096     129537 /home/debi1
lsof      3379             root  rtd       DIR      254,0     4096          2 /
lsof      3379             root  txt       REG      254,0   161852      31033 /usr/bin/lsof

ou

affiché par lsof correspond à
COMMAND le processus utilisant ce fichier
PID numéro identifiant du processus
TID numéro identifiant de la tâche
USER utilisateur
FD (File Descriptor) REG=fichier régulier , DIR=Dossier…
NAME nom du fichier ouvert

Exemples

Fichier ouverts par l'utilisateur "toto"

lsof -u toto

Savoir qui utilise les fichiers d'un répertoire

lsof +D /tmp 

Pour lister tous les fichiers ouverts sur le périphérique /dev/hd4

(pratique pour trouver le fichier encore ouvert sur une partition qui ne peut donc pas être démontée):

lsof /dev/hd4

Trouver la liste des fichiers ouverts par un processus :

lsof -p PID

Afficher la liste de toutes les connexions réseaux :

lsof -i

Trouver le processus qui écoute sur le port 80 :

sudo lsof -nP -i tcp:80 | grep LISTEN

lsof pour repérer les processus fantômes qui mangent l'espace disque !

Dans un cas, ou votre disque dur se remplissait trop vite, vous avez rapidement supprimé “à la sauvage” des fichiers qui grossissaient ( ex : fichiers logs, comme .xession-errors ); mais étrangement, l'espace disque ne semble pas libéré ! Il faut vérifier si des processus ont gardé ouvert ces fichiers, qui ont été supprimés. Ces processus deviennent des processus fantômes.

lsof +L1
D'après le manuel : « +L1 » will select open files that have been unlinked

Les processus qui n’ont pas libérés les fichiers supprimés sont identifiés avec l’argument (deleted) en fin de ligne. Pour libérer de l’espace, il faut soit redémarrer le processus si c’est un démon ou le tuer. Pour plus de détails : https://memo-linux.com/linux-gestion-des-processus-qui-ne-liberent-pas-de-lespace-disque/

Voir

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/systeme/lsof.txt · Dernière modification: 19/06/2023 22:05 par lagrenouille

Pied de page des forums

Propulsé par FluxBB