Sobes.tech
Middle

Jak zjistit, s jakými soubory právě pracuje program v Linuxu?

sobes.tech AI

Odpověď od AI

Použijte nástroj lsof (výpis otevřených souborů).

# Základní použití `lsof` pro zobrazení seznamu všech otevřených souborů
lsof

Pro získání seznamu otevřených souborů konkrétním procesem (podle PID):

# Zobrazit seznam otevřených souborů procesu s PID 1234
lsof -p 1234

Pro získání seznamu otevřených souborů určitým příkazem (podle názvu):

# Zobrazit seznam otevřených souborů všech procesů s názvem "nginx"
lsof -c nginx

Pro získání seznamu otevřených souborů určitým uživatelem:

# Zobrazit seznam otevřených souborů uživatele "user1"
lsof -u user1

Další příznaky lsof:

Příznak Popis
-i Zobrazit síťová spojení (sokety)
-n Neprovádět překlad IP adres na názvy hostitelů
-P Neprovádět překlad portů na názvy služeb
-r [N] Restartovat lsof každých N sekund

Příklad použití k určení, který proces používá konkrétní soubor:

# Který proces používá soubor /var/log/syslog?
lsof /var/log/syslog

Výstup lsof obsahuje následující sloupce:

  • COMMAND: Název příkazu, který spustil proces.
  • PID: Identifikátor procesu.
  • TID: Identifikátor vlákna (pokud je relevantní).
  • USER: Uživatelské jméno, které spustilo proces.
  • FD: Deskriptor souboru.
  • TYPE: Typ uzlu souboru (DIR, REG, FIFO, CHR, BLK, SOCK, atd.).
  • DEVICE: Identifikátor zařízení.
  • SIZE/OFF: Velikost souboru nebo posun.
  • NODE: Číslo inode.
  • NAME: Název souboru nebo síťová adresa.