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.