Cum să utilizați comanda lsof în Linux pentru a lista fișierele deschise

Open Featured
⏱️ 5 min read

Lucrul bun despre Linux este că puteți vizualiza și gestiona cu ușurință totul, de la procesul de pornire până la instalarea pachetelor software. Aici discutăm cum puteți utiliza comanda lsof în Linux pentru a vizualiza fișierele deschise și procesele care le folosesc. Știind cum să vizualizați acest lucru vă poate ajuta să înțelegeți cum funcționează sistemul și chiar să luați acțiunile necesare pentru anumite procese.

Comanda Lsof

Pentru a vizualiza fișierele deschise și utilizatorii sau procesele responsabile pentru acestea, folosim lsof utilitate. În mod implicit, lsof este preinstalat în majoritatea distribuțiilor.

Cu toate acestea, dacă nu îl aveți instalat, puteți utiliza managerul de pachete pentru a-l instala pe sistemul dumneavoastră.

Debian/Ubuntu

Pe Debian, rulați comanda:

sudo apt-get install lsof

Arch/Manjaro

Pe Manjaro și alte distribuții bazate pe Arch, utilizați pacman rulând comanda:

sudo pacman -S lsof

CentOS/REHL/Fedora

Pentru CentOS și familia REHL, puteți utiliza dnf:

sudo dnf install lsof

Utilizați comanda lsof pentru a lista fișierele deschise pentru un proces Linux

La fel ca majoritatea comenzilor Linux, utilitarul lsof este incredibil de simplu de utilizat. Începeți prin a tasta comanda lsof:

Cont Netflix Gratis
sudo lsof

Odată ce rulați comanda de mai sus, lsof ar trebui să returneze informații despre fișierele deschise în sistem.

COMMAND PID TID TASKCMD USER   FD      TYPE             DEVICE SIZE/OFF            NODE NAME
init      1             root  cwd       DIR               8,48     4096               2 /
init      1             root  rtd       DIR               8,48     4096               2 /
init      1             root  txt       REG               0,19   632048 281474976743906 /init
init      1             root    0u      CHR                1,3      0t0           15362 /dev/null
init      1             root    1u      CHR                1,3      0t0           15362 /dev/null
init      1             root    2u      CHR                1,3      0t0           15362 /dev/null
init      1             root    3w      CHR               1,11      0t0           15367 /dev/kmsg
init      1             root    4u     sock                0,8      0t0           22689 protocol: AF_VSOCK
init      1             root    5r      REG                0,4        0      4026532185 mnt
init      1             root    6r      REG                0,4        0      4026532201 mnt
init      1             root    7r      DIR               8,48     4096             240 /home/cap
init      1             root    8u      DIR               8,48     4096               2 /
init      1             root    9u     sock                0,8      0t0           21853 protocol: AF_VSOCK

Notă: dacă aveți privilegii sudo, executați comanda cu sudo pentru a evita erorile „permisiune refuzată” pentru anumite fișiere.

După cum se arată în rezultatul de mai sus, ieșirea lsof are următoarele coloane:

Coloană Reprezentare
Comanda Afișează numele procesului folosind fișierul țintă.
PID Identificatorul unic pentru procesul care utilizează fișierul.
TID Coloana arată identificatorul firului.
TASKCMD Numele comenzii sarcinii.
UTILIZATOR Numele de utilizator sau UID-ul utilizatorului care execută procesul.
FD Descriptor de fișier al fișierului și moduri.
TIP Nodul asociat cu fișierul țintă.
DISPOZITIV Numărul dispozitivului este separat prin virgule.
DIMENSIUNE/OFF Dimensiunea fișierului în octeți de dimensiunea deplasării fișierului
NODUL Valoarea inodului fișierului local. Puteți folosi comanda stat pentru a afișa inode informații pentru dosar.
NUME Punctul de montare al fișierului.

Acum că înțelegeți ce reprezintă conținutul comenzii imprimate lsof, să folosim comanda pentru a filtra informații specifice.

Cum se filtrează pentru un proces specific

Pentru a filtra numai anumite fișiere deschise de un anumit proces, putem folosi fie numele procesului, fie valoarea PID.

De exemplu, pentru a afișa fișierele utilizate de procesul Firefox, putem folosi comanda:

sudo lsof -c firefox
Lsof C Firefox

Comanda va afișa toate fișierele deschise de procesul Firefox.

Pentru a filtra după ID-ul procesului, putem folosi -p opțiunea și treceți ID-ul procesului. Puteți folosi top comanda pentru a obține ID-ul procesului țintă.

De exemplu, pentru a obține PID-ul procesului Firefox, putem folosi comanda:

sudo ps aux | grep firefox

Odată ce aveți PID-ul procesului țintă, utilizați lsof pentru a afișa fișierele deschise:

sudo lsof -p 2121
Lsof Pid

Comanda de mai sus va tipări fișierele deschise de proces cu PID-ul specificat.

Cum se filtrează pentru un anumit utilizator

Pentru a vizualiza numai fișierele deschise de un anumit utilizator, putem folosi -u steag. De exemplu, pentru a filtra pentru utilizatorul Debian, utilizați comanda:

sudo lsof -u debian
Lsof U Debian

Cum se filtrează pentru un anumit fișier

Să presupunem că doriți să cunoașteți doar procesul și utilizatorul care a deschis un anumit fișier. Pentru a face acest lucru, treceți numele fișierului la lsof:

sudo lsof /bin/sleep
Lsof Sleep

Cele de mai sus vor filtra numai pentru fișierul specific și vor returna informațiile aferente, inclusiv utilizatorul, ID-ul procesului și multe altele.

Încheierea

În acest tutorial simplu, am discutat despre cum să interogăm sistemul pentru informații despre fișierele deschise folosind comanda lsof în Linux. Iată câteva comenzi suplimentare pentru a enumera conținutul unui director în terminal.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

You may also like...

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x