Middle
Ako zistiť, s ktorými súbormi práve pracuje program v Linuxe?
sobes.tech AI
Odpoveď od AI
Použite nástroj lsof (zoznam otvorených súborov).
# Základné použitie `lsof` na zobrazenie zoznamu všetkých otvorených súborov
lsof
Na získanie zoznamu otvorených súborov konkrétnym procesom (podľa PID):
# Zobraziť zoznam otvorených súborov pre proces s PID 1234
lsof -p 1234
Na získanie zoznamu otvorených súborov určitým príkazom (podľa názvu):
# Zobraziť zoznam otvorených súborov pre všetky procesy s názvom "nginx"
lsof -c nginx
Na získanie zoznamu otvorených súborov určitým používateľom:
# Zobraziť zoznam otvorených súborov pre používateľa "user1"
lsof -u user1
Ďalšie príznaky lsof:
| Príznak | Popis |
|---|---|
-i |
Zobraziť sieťové spojenia (sockety) |
-n |
Neprevádza IP adresy na názvy hostiteľov |
-P |
Neprevádza porty na názvy služieb |
-r [N] |
Reštartuje lsof každých N sekúnd |
Príklad použitia na určenie, ktorý proces používa konkrétny súbor:
# Ktorý proces používa súbor /var/log/syslog?
lsof /var/log/syslog
Výstup lsof obsahuje nasledujúce stĺpce:
- COMMAND: Názov príkazu, ktorý spustil proces.
- PID: Identifikátor procesu.
- TID: Identifikátor vlákna (ak je relevantné).
- USER: Meno používateľa, ktorý spustil proces.
- FD: Descriptor súboru.
- TYPE: Typ uzla súboru (DIR, REG, FIFO, CHR, BLK, SOCK, atď.).
- DEVICE: Identifikátor zariadenia.
- SIZE/OFF: Veľkosť súboru alebo posun.
- NODE: Číslo inode.
- NAME: Názov súboru alebo sieťová adresa.