Cum se verifică fișierele deschise în Linux

How Check Open Files Linux



Este posibil să fi dat peste zicala: Totul este un fișier în Linux. Deși acest lucru nu este în întregime adevărat, el deține un set de adevăruri.

În sistemele Linux și Unix, totul este ca un fișier. Asta înseamnă că resurselor din sistemul Unix li se atribuie un descriptor de fișiere, inclusiv dispozitive de stocare, prize de rețea, procese etc.







Un descriptor de fișiere este un număr unic care identifică un fișier și alte dispozitive de intrare / ieșire. Descrie resursele și modul în care nucleul le accesează. Gândiți-vă la asta ca la o poartă către resursele hardware de abstractizare a nucleului.



Din păcate, conceptul de descriptori de fișiere depășește sfera acestui tutorial; luați în considerare linkul furnizat mai jos pentru a începe să aflați mai multe:



https://en.wikipedia.org/wiki/File_descriptor





Asta înseamnă că sistemele Unix și Unix, cum ar fi Linux, folosesc foarte mult astfel de fișiere. În calitate de utilizator puternic al Linux, este incredibil de util să vezi fișierele deschise și procesul și utilizatorii care le folosesc.

Acest tutorial se va concentra pe modalități de a vizualiza fișierele deschise și care proces sau utilizator este responsabil.



Pre-cerințe

Înainte de a începe, asigurați-vă că aveți:

  • Un sistem Linux
  • Utilizator cu privilegii root sau sudo

Dacă aveți acestea, permiteți-ne să începem:

Utilitar LSOF

Creat de Victor A Abell, List open files, sau lsof pe scurt, este un utilitar de linie de comandă care ne permite să vizualizăm fișierele deschise și procesele sau utilizatorii care le-au deschis.

Utilitarul lsof este disponibil în distribuțiile Linux principale; cu toate acestea, s-ar putea să nu găsiți instalat și, prin urmare, poate fi necesar să instalați manual.

Cum se instalează lsof pe Debian / Ubuntu

Pentru a-l instala pe Debian, utilizați comanda:

sudo apt-get update

sudo apt-get installlsof-și

Cum se instalează pe REHL / CentOS

Pentru a instala pe REHL și CentOS, utilizați comanda:

sudoactualizare dnf

sudodnfinstalarelsof

Cum se instalează pe Arch

Pe Arch, apelați managerul de pachete utilizând comanda:

sudopacman-A lui

sudopacman-Slsof

Cum se instalează pe Fedora

Pe Fedora, utilizați comanda:

sudo yum instalațilsof

Odată ce aveți utilitarul lsof instalat și actualizat, îl putem folosi.

Utilizare lsof de bază

Pentru a utiliza instrumentul lsof, introduceți comanda:

sudolsof

După ce executați comanda de mai sus, lsof va arunca o mulțime de informații așa cum se arată mai jos:

Ieșirea de mai sus arată toate fișierele deschise de procese. Ieșirea are diferite coloane, fiecare reprezentând informații specifice despre fișier.

  • Coloana COMMAND - arată numele procesului care folosește fișierul.
  • PID - afișează Identificatorul de proces al procesului utilizând fișierul.
  • TID - Afișează ID-ul sarcinii (fire) al procesului.
  • TASKCMD - Reprezentați numele comenzii de activitate.
  • UTILIZATOR - Proprietarul procesului.
  • FD - Afișează numărul descriptorului fișierului. Acesta este modul în care procesele utilizează fișierul; opțiunile disponibile în această coloană de ieșire includ:
  • cwd - directorul de lucru curent.
  • eu eu - fișier mapat cu memorie
  • pd - Directorul Parinte
  • jld - directorul închisorii
  • ltx - text de bibliotecă partajată
  • rtd - directorul rădăcină.
  • txt - codul programului și datele
  • NS - fișier de urmărire a nucleului.
  • greșește - Eroare informație descriptor fișier
  • mmp - Dispozitiv cartografiat cu memorie.
  • TIP - Afișează tipul de nod asociat fișierului, cum ar fi:
  • Unix - pentru socketul de domeniu Unix.
  • PENTRU TINE - reprezintă directorul
  • REG - reprezentând fișierul obișnuit
  • CHR - reprezintă fișierul cu caractere speciale.
  • LEGĂTURĂ - fișier link simbolic
  • BLK - Blocați fișierul special
  • Internet - socket domeniu Internet
  • FIFO - o țeavă numită (fișierul First In First Out)
  • TUBĂ - pentru țevi

Si multe altele.

  • DISPOZITIVE - Afișează numerele dispozitivelor separate prin virgule în ordinea fișierului cu caractere speciale, blocare specială, obișnuită, director și fișier NFS.
  • SIZE / OFF - arată mărimea fișierului pr fișier decalat în octeți.
  • NODUL - afișează numărul nodului fișierului local, tipul pentru tipul de protocol internet etc.
  • NUME - afișează numele punctului de montare și fs pe care se află fișierul.

Notă: Vă rugăm să consultați manualul lsof pentru informații detaliate despre coloane.

Cum se arată procesele care au deschis un fișier

Lsof ne oferă opțiuni care ne ajută să filtrăm rezultatul pentru a afișa doar procesele care au deschis un anumit fișier.

De exemplu, pentru a vedea fișierul care a deschis fișierul / bin / bash, utilizați comanda ca:

sudolsof/a.m/bash

Acest lucru vă va oferi o ieșire așa cum se arată mai jos:

COMANDĂ PID UTILIZATOR FD TIP DISPOZITIV/OFF NAME NAME

ksmtuned1025root txt REG253,0 1150704 428303 /usr/a.m/bash

bash 2968centos txt REG253,0 1150704 428303 /usr/a.m/bash

bash 3075centos txt REG253,0 1150704 428303 /usr/a.m/bash

Cum arată fișierele deschise de un anumit utilizator

De asemenea, putem filtra ieșirea pentru a afișa fișierele deschise de un anumit utilizator. Facem acest lucru folosind steagul -u urmat de numele de utilizator ca:

sudolsof-usute

Acest lucru vă va oferi o ieșire așa cum se arată mai jos:

Cum se afișează fișierele deschise de un anumit proces

Să presupunem că dorim să vizualizăm toate fișierele deschise de un anumit proces? Pentru aceasta, putem utiliza PID-ul procesului pentru a filtra ieșirea.

De exemplu, comanda de mai jos arată fișierele deschise de bash.

sudolsof-p 3075

Acest lucru vă va oferi numai fișierele deschise de systemd așa cum se arată:

Cum se afișează fișierele deschise într-un director

Pentru a deschide fișierele într-un anumit director, putem trece opțiunea + D urmată de calea directorului.

De exemplu, listați fișierele deschise în directorul / etc.

sudolsof + D/etc.

Mai jos este rezultatul pentru acest lucru:

Cum se afișează conexiunea la rețea

Deoarece totul în Linux este un fișier, putem obține fișiere de rețea, cum ar fi fișiere TCP sau conexiuni.

Putem folosi comanda:

sudolsof-iTCP

Acest lucru vă va oferi conexiunile TCP din sistem.

De asemenea, puteți filtra după portul specific utilizând comanda prezentată mai jos:

sudolsof-i:22

Acest lucru vă va oferi rezultatul așa cum se arată mai jos:

Cum să afișați continuu fișiere

Lsof ne oferă un mod de a bucla ieșirea la fiecare câteva secunde. Acest lucru vă permite să monitorizați continuu fișierele deschise de un proces sau de un utilizator.

Cu toate acestea, această opțiune necesită terminarea manuală a procesului.

De exemplu, comanda de mai jos monitorizează continuu fișierele deschise pe portul 22:

sudolsof -r-i:22

După cum puteți vedea, în a treia buclă, lsof prinde conexiunea stabilită la server pe SSH.

Concluzie

Lsof este un utilitar incredibil de util. Vă permite să monitorizați fișierele critice, precum și să monitorizați utilizatorii și să procesați deschiderea fișierelor. Acest lucru poate fi extrem de util atunci când depanați sau căutați încercări rău intenționate ale sistemului.

Așa cum se arată în acest tutorial, folosind diverse exemple și metode, puteți combina funcționalitatea oferită de instrumentul lsof pentru monitorizare personalizată.

Vă mulțumim că ați citit și distribuit! Sper că ai învățat ceva nou!