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.