lsof

lsof

Lsof.JPG
Date de bază

dezvoltator Vic Abell
Anul publicării 1994 (versiunea 3)
Versiunea actuală  4,89
(7 iunie 2015)
sistem de operare AIX 5.3, Darwin 9 ( macOS 10.5), FreeBSD 4.9 ( x86 ), FreeBSD 7 ( amd64 ), Linux 2.1.72 ( x86 , amd64 ), Solaris 9 și 10.
categorie Analiza stării
Licență Licență compatibilă cu BSD licența
Vorbitoare de limbă germană da
https://people.freebsd.org/~abe/

lsof ( L i s t o pen f iles) a fost dezvoltat de sursa deschisă Vic Abell -tool care pe Unix care programe care indică sistemele care fișiere sau socket-uri păstrează deschise.

Format de iesire

Fișierele deschise se află la lsof

  • Socluri de domeniu UNIX (tip = unix)
  • Fișiere obișnuite (tip = REG)
  • FIFO (tip = FIFO)
  • Deschide directoare (tip = DIR)
  • Socluri de domeniu Internet (tip = IPv4 sau tip = IPv6 )
  • Dispozitive cu caractere (fișiere speciale precum / dev / random ; tip = CHR)

și alte câteva zeci, cum ar fi soclurile AX.25 , dispozitivele bloc etc.

Rezultatul arată astfel:

COMMAND     PID   TID       USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
...
ssh-agent  2678              lbo    3u     unix 0xffff88013e71cac0      0t0       7624 /tmp/ssh-oyerzGJI2633/agent.2633
ssh-agent  2678              lbo    6w     FIFO                0,8      0t0       4795 pipe
ssh-agent  2678              lbo    8r     FIFO                0,8      0t0       4799 pipe
system-co  2866              lbo  mem       REG                8,6   162968    1050015 /usr/lib/x86_64-linux-gnu/libssh2.so.1.0.1
sshd       3031             root  cwd       DIR                8,6     4096          2 /
sshd       3031             root  rtd       DIR                8,6     4096          2 /
sshd       3031             root  txt       REG                8,6   517088    1053360 /usr/sbin/sshd
sshd       3031             root  mem       REG                8,6   131107    1187879 /lib/x86_64-linux-gnu/libpthread-2.13.so
sshd       3031             root  mem       REG                8,6    80712    1180726 /lib/x86_64-linux-gnu/libresolv-2.13.so
sshd       3031             root    0u      CHR                1,3      0t0       1028 /dev/null
sshd       3031             root    3u     IPv4               8026      0t0        TCP *:ospfapi (LISTEN)
sshd       3031             root    4u     IPv6               8028      0t0        TCP *:ospfapi (LISTEN)
ssh        7314              lbo  cwd       DIR                8,7     4096    5767169 /home/lbo
ssh        8602              lbo    3r     IPv6              68343      0t0        TCP [2001:470:1f0b:2f2:3189:67c1:b550:9400]:56194->obsd-lbo6:ssh (ESTABLISHED)
...
udevd      3226             root  11u   netlink 0t0      10784 KOBJECT_UEVENT
...

Aici puteți vedea foarte bine diferitele tipuri (coloana TIP), aici bazându-se în principal pe clientul sshd și ssh.

Format de ieșire pentru alte programe

Pentru procesarea ieșirii cu scripturi, opțiunea -F poate fi utilizată pentru a genera un format de ieșire alternativ în care fiecare linie conține o literă de identificare urmată de valoarea corespunzătoare. O secțiune cu mai multe linii este creată pentru fiecare proces care rulează, care este introdus de linia cu litera p și ID-ul procesului. În cadrul unei secțiuni de proces există valori precum ID-ul utilizatorului procesului, introdus de u, precum și mai multe secțiuni pe fișierele deschise, introduse de o linie cu litera f și descriptorul de fișiere. O ieșire exemplară pentru procesul sshd cu două secțiuni de fișier ar arăta astfel:

...
p5502
g5502
R1
csshd
u0
Lroot
fcwd
a
l
tDIR
D0x811
s4096
i2
k25
n/
ftxt
a
l
tREG
D0x811
s540896
i657919
k1
n/usr/sbin/sshd
...

Acest format de ieșire este utilizat de ex. B. din unele scripturi care sunt furnizate cu lsof.

Utilizare de zi cu zi

Isof este folosit foarte des atunci când comanda Unix umount refuză să demonteze un dispozitiv dacă fișierele sunt încă deschise pe acest dispozitiv sau în directorul său de montare (diamantul reprezintă o coajă de rădăcină):

# umount /mount/path
umount: /mount/path: device is busy.

Cu lsof, acum este ușor să determinați ce programe trebuie închise pentru a asigura demontarea cu succes:

# lsof /mount/path
bash 3156             usr cwd DIR               8,33     4096          2 /mount/path

Din intrarea găsită, se poate observa că utilizatorul usr rulează încă un shell bash cu PID 3156, care folosește / mount / path ca director de lucru ( directorul de lucru curent ), recunoscut după tipul DIR .

Versiunea de montare din pachetul util-linux indică chiar și lsof:

# umount /mount/path
umount: /mount/path: device is busy.
       (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))

Dovezi individuale

  1. lsof (8)