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