Sobes.tech
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.