Middle
Kaip sužinoti, su kuriais failais šiuo metu dirba programa Linux?
sobes.tech AI
Atsakymas iš AI
Naudokite lsof įrankį (atvirų failų sąrašas).
# `lsof` pagrindinis naudojimas, rodyti visų atvirų failų sąrašą
lsof
Norėdami gauti konkretaus proceso atvirų failų sąrašą (pagal PID):
# Rodyti atvirų failų sąrašą proceso su PID 1234
lsof -p 1234
Norėdami gauti konkrečios komandos atvirų failų sąrašą (pagal pavadinimą):
# Rodyti atvirų failų sąrašą visų procesų, kurių pavadinimas "nginx"
lsof -c nginx
Norėdami gauti konkretaus naudotojo atvirų failų sąrašą:
# Rodyti atvirų failų sąrašą naudotojo "user1"
lsof -u user1
Papildomi lsof žymekliai:
| Žymeklis | Aprašymas |
|---|---|
-i |
Rodo tinklo ryšius (sockets) |
-n |
Neverčia IP adresų į vardus |
-P |
Neverčia prievadų į paslaugų vardus |
-r [N] |
Perkrauna lsof kas N sekundžių |
Pavyzdys, kaip nustatyti, kuris procesas naudoja konkretų failą:
# Kuris procesas naudoja failą /var/log/syslog?
lsof /var/log/syslog
lsof išvestis apima šiuos stulpelius:
- COMMAND: Komandos pavadinimas, kuri pradėjo procesą.
- PID: Procesoriaus ID.
- TID: Gijos ID (jei taikoma).
- USER: Naudotojo vardas, kuris pradėjo procesą.
- FD: Failo deskriptorius.
- TYPE: Failo tipas (DIR, REG, FIFO, CHR, BLK, SOCK, ir kt.).
- DEVICE: Įrenginio ID.
- SIZE/OFF: Failo dydis arba poslinkis.
- NODE: inode numeris.
- NAME: Failo pavadinimas arba tinklo adresas.