Vous êtes ici

lsof : Connaître les fichiers ouverts

Cet article vous présente la commande 'lsof' et les principales manières de l'utiliser.

Pas d'installation la commande est installées ur votre système.

Son objet de vous affichier les fichiers ouverts. Si vous l'utlisez sans option vous allez pouvoir constater qu'il y en a un paquet :

$ lsof

Le mieux est de la compter avec les commandes suivantes :

$ lsof | wc -l

Cela donne plus de 94000 fichiers ouverts sur mon système Ubuntu 16.04.

La commande fonctionne dans les deux sens :

  • elle vous donne les fichiers ouverts par un processus
  • elle vous donne le nom du processus qui utlise un fichier.

Prennons l'exemple du fichier "/var/log/syslog". Qui l'utilise ?

$ sudo lsof /var/log/syslog

donne

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
rsyslogd 830 syslog    9w   REG    8,1    92363 6684921 /var/log/syslog

On n'est pas étonné : rsyslog utilise ce fichier.

Si à l'invers on veut savoir quels fichiers a ouvert rsyslog, on passe la commande suivante :

$ sudo lsof -p 830

qui donne

COMMAND  PID   USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
rsyslogd 830 syslog  cwd       DIR                8,1     4096          2 /
rsyslogd 830 syslog  rtd       DIR                8,1     4096          2 /
rsyslogd 830 syslog  txt       REG                8,1   599328   16655745 /usr/sbin/rsyslogd
rsyslogd 830 syslog  mem       REG                8,1   101200   14680265 /lib/x86_64-linux-gnu/libresolv-2.23.so
...

rsyslogd 830 syslog    0r      CHR                1,3      0t0          6 /dev/null
rsyslogd 830 syslog    1w      CHR                1,3      0t0          6 /dev/null
rsyslogd 830 syslog    2w      CHR                1,3      0t0          6 /dev/null
rsyslogd 830 syslog    3u     unix 0xffff880405f55c00      0t0       9571 /run/systemd/journal/syslog type=DGRAM
rsyslogd 830 syslog    4u     unix 0xffff880408db9400      0t0      16701 /var/spool/postfix/dev/log type=DGRAM
rsyslogd 830 syslog    5r      REG                0,4        0 4026531995 /proc/kmsg
rsyslogd 830 syslog    6u     IPv4              16704      0t0        UDP *:syslog
rsyslogd 830 syslog    7u     IPv6              16705      0t0        UDP *:syslog
rsyslogd 830 syslog    8u  a_inode               0,11        0       7994 [eventpoll]
rsyslogd 830 syslog    9w      REG                8,1    92619    6684921 /var/log/syslog
rsyslogd 830 syslog   10w      REG                8,1    86738    6693431 /var/log/auth.log
rsyslogd 830 syslog   11w      REG                8,1      352    6693429 /var/log/mail.log
rsyslogd 830 syslog   12w      REG                8,1      352    6687496 /var/log/mail.err
rsyslogd 830 syslog   13w      REG                8,1   126618    6693430 /var/log/kern.log

Et si vous voulez savoir ce qui est ouvert sur le réseau vous passez la commande :

$ lsof -i

qui donne

COMMAND    PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd   830     syslog    6u  IPv4  16704      0t0  UDP *:syslog
rsyslogd   830     syslog    7u  IPv6  16705      0t0  UDP *:syslog
avahi-dae  842      avahi   12u  IPv4  16656      0t0  UDP *:mdns
avahi-dae  842      avahi   13u  IPv6  16657      0t0  UDP *:mdns
avahi-dae  842      avahi   14u  IPv4  16658      0t0  UDP *:35074
avahi-dae  842      avahi   15u  IPv6  16659      0t0  UDP *:55835
sshd       993       root    3u  IPv4  18592      0t0  TCP *:ssh (LISTEN)
sshd       993       root    4u  IPv6  18594      0t0  TCP *:ssh (LISTEN)
dnsmasq   1011     nobody    4u  IPv4  16293      0t0  UDP JFDM0044-1591963:domain
dnsmasq   1011     nobody    5u  IPv4  16294      0t0  TCP JFDM0044-1591963:domain (LISTEN)
dnsmasq   1011     nobody   11u  IPv4  17304      0t0  UDP *:42560
cupsd     5669       root   10u  IPv6  37179      0t0  TCP ip6-localhost:ipp (LISTEN)
cupsd     5669       root   11u  IPv4  37180      0t0  TCP localhost:ipp (LISTEN)
cups-brow 5672       root    8u  IPv4  37192      0t0  UDP *:ipp

Fait le24/10/2017

Tags: 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer