Sobes.tech
Middle

Cum poți afla cu ce fișiere lucrează în prezent un program în Linux?

sobes.tech AI

Răspuns de la AI

Utilizați utilitarul lsof (listare fișiere deschise).

# Utilizare de bază a lsof pentru afișarea listei tuturor fișierelor deschise
lsof

Pentru a obține o listă de fișiere deschise de un anumit proces (după PID):

# Afișează lista fișierelor deschise pentru procesul cu PID 1234
lsof -p 1234

Pentru a obține o listă de fișiere deschise de o comandă specifică (după nume):

# Afișează lista fișierelor deschise pentru toate procesele cu numele "nginx"
lsof -c nginx

Pentru a obține o listă de fișiere deschise de un utilizator specific:

# Afișează lista fișierelor deschise pentru utilizatorul "user1"
lsof -u user1

Flag-uri suplimentare pentru lsof:

Flag Descriere
-i Afișează conexiunile de rețea (socket-uri)
-n Nu convertește adresele IP în nume de gazdă
-P Nu convertește porturile în nume de servicii
-r [N] Repornește lsof la fiecare N secunde

Exemplu de utilizare pentru a determina ce proces utilizează un fișier specific:

# Ce proces utilizează fișierul /var/log/syslog?
lsof /var/log/syslog

Ieșirea lsof include următoarele coloane:

  • COMMAND: Numele comenzii care a lansat procesul.
  • PID: ID-ul procesului.
  • TID: ID-ul firului de execuție (dacă este cazul).
  • USER: Numele utilizatorului care a lansat procesul.
  • FD: Descriptorul de fișier.
  • TYPE: Tipul nodului fișierului (DIR, REG, FIFO, CHR, BLK, SOCK, etc.).
  • DEVICE: ID-ul dispozitivului.
  • SIZE/OFF: Dimensiunea fișierului sau offset-ul.
  • NODE: Numărul inode.
  • NAME: Numele fișierului sau adresa de rețea.