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 updatesudo apt-get installlsof-și
Cum se instalează pe REHL / CentOS
Pentru a instala pe REHL și CentOS, utilizați comanda:
sudoactualizare dnfsudodnfinstalarelsof
Cum se instalează pe Arch
Pe Arch, apelați managerul de pachete utilizând comanda:
sudopacman-A luisudopacman-Slsof
Cum se instalează pe Fedora
Pe Fedora, utilizați comanda:
sudo yum instalațilsofOdată ce aveți utilitarul lsof instalat și actualizat, îl putem folosi.
Utilizare lsof de bază
Pentru a utiliza instrumentul lsof, introduceți comanda:
sudolsofDupă 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/bashAcest lucru vă va oferi o ieșire așa cum se arată mai jos:
COMANDĂ PID UTILIZATOR FD TIP DISPOZITIV/OFF NAME NAMEksmtuned1025root 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-usuteAcest 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 3075Acest 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-iTCPAcest lucru vă va oferi conexiunile TCP din sistem.
De asemenea, puteți filtra după portul specific utilizând comanda prezentată mai jos:
sudolsof-i:22Acest 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!