Diferențe

Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.

Link către această vizualizare comparativă

Urmatoarea versiune
Versiuni anterioare
sistemul_de_fisiere_proc [2026/08/18 05:29] – creat thinkrootsistemul_de_fisiere_proc [2026/08/18 05:33] (curent) – [Vezi și] thinkroot
Linia 1: Linia 1:
 ====== Sistemul de fișiere /proc în Linux ====== ====== Sistemul de fișiere /proc în Linux ======
  
-Majoritatea utilizatorilor Linux știu că =/procexistă. Puțini îl folosesc efectiv. Dar =/proceste unul dintre cele mai utile instrumente de diagnosticare de pe întregul sistem - și nu necesită niciun pachet suplimentar.+Majoritatea utilizatorilor Linux știu că ''/proc'' există. Puțini îl folosesc efectiv. Dar ''/proc'' este unul dintre cele mai utile instrumente de diagnosticare de pe întregul sistem - și nu necesită niciun pachet suplimentar.
  
-=/proceste un sistem de fișiere virtual. Nimic din el nu este stocat pe disc. Nucleul generează majoritatea acestor fișiere din mers, în momentul în care le citești. Gândește-te la el ca la o fereastră în timp real spre starea internă a nucleului: procese active, structura memoriei, informații despre procesor, statistici de rețea, întreruperi hardware și multe altele.+''/proc'' este un sistem de fișiere virtual. Nimic din el nu este stocat pe disc. Nucleul generează majoritatea acestor fișiere din mers, în momentul în care le citești. Gândește-te la el ca la o fereastră în timp real spre starea internă a nucleului: procese active, structura memoriei, informații despre procesor, statistici de rețea, întreruperi hardware și multe altele.
  
-Odată ce începi să citești direct din =/proc=, vei înțelege exact de unde extrag datele unelte precum =top==free==vmstatsau =ss=. Vei putea, de asemenea, să obții informații pe care acele unelte nu le expun.+Odată ce începi să citești direct din ''/proc'', vei înțelege exact de unde extrag datele unelte precum ''top''''free''''vmstat'' sau ''ss''. Vei putea, de asemenea, să obții informații pe care acele unelte nu le expun.
  
 ===== Ce este /proc ===== ===== Ce este /proc =====
  
-Nucleul montează =/procca un pseudo-sistem de fișiere de tip =procfs=. Apare în arborele de fișiere, dar nimic nu este scris pe disc. Fiecare citire declanșează o funcție din nucleu care asamblează datele în timp real.+Nucleul montează ''/proc'' ca un pseudo-sistem de fișiere de tip ''procfs''. Apare în arborele de fișiere, dar nimic nu este scris pe disc. Fiecare citire declanșează o funcție din nucleu care asamblează datele în timp real.
  
 Poți confirma tipul de montare cu: Poți confirma tipul de montare cu:
Linia 18: Linia 18:
 </code> </code>
  
-Sub =/procexistă două categorii distincte. Prima: directoare numerotate precum =/proc/1234/=, câte unul pentru fiecare proces activ, unde numărul este PID-ul. A doua: fișiere și directoare globale precum =/proc/meminfo==/proc/cpuinfoși =/proc/net/=, care expun starea la nivel de nucleu.+Sub ''/proc'' există două categorii distincte. Prima: directoare numerotate precum ''/proc/1234/'', câte unul pentru fiecare proces activ, unde numărul este PID-ul. A doua: fișiere și directoare globale precum ''/proc/meminfo''''/proc/cpuinfo'' și ''/proc/net/'', care expun starea la nivel de nucleu.
  
-Totul poate fi citit cu unelte obișnuite: =cat==grep==less==awk=, chiar și o comandă simplă =readdin shell. Unele fișiere din =/proc/sys/sunt și inscriptibile, ceea ce este mecanismul prin care funcționează =sysctl=.+Totul poate fi citit cu unelte obișnuite: ''cat''''grep''''less''''awk'', chiar și o comandă simplă ''read'' din shell. Unele fișiere din ''/proc/sys/'' sunt și inscriptibile, ceea ce este mecanismul prin care funcționează ''sysctl''.
  
 ===== Fișiere globale utile ===== ===== Fișiere globale utile =====
Linia 36: Linia 36:
   * **model name** - șirul cu modelul procesorului   * **model name** - șirul cu modelul procesorului
   * **cpu MHz** - frecvența curentă (se actualizează dinamic odată cu scalarea frecvenței)   * **cpu MHz** - frecvența curentă (se actualizează dinamic odată cu scalarea frecvenței)
-  * **cache size** - dimensiunea cache-ului raportat de arhitectură; pe procesoarele moderne cache-ul este partajat între nuclee în moduri variate, deci nu trebuie interpretat ca un cache privat per nucleu; =lscpuparsează același fișier și prezintă mai clar soclurile, nucleele și firele de execuție +  * **cache size** - dimensiunea cache-ului raportat de arhitectură; pe procesoarele moderne cache-ul este partajat între nuclee în moduri variate, deci nu trebuie interpretat ca un cache privat per nucleu; ''lscpu'' parsează același fișier și prezintă mai clar soclurile, nucleele și firele de execuție 
-  * **flags** - caracteristici ale procesorului; caută =vmxsau =svmpentru suport de virtualizare, =aespentru accelerare hardware AES, =avx2pentru suport SIMD AVX2 +  * **flags** - caracteristici ale procesorului; caută ''vmx'' sau ''svm'' pentru suport de virtualizare, ''aes'' pentru accelerare hardware AES, ''avx2'' pentru suport SIMD AVX2 
-  * **siblings vs cpu cores** - dacă =siblingseste mai mare decât =cpu cores=, SMT (hyperthreading) este activ și CPU-urile logice partajează nuclee fizice+  * **siblings vs cpu cores** - dacă ''siblings'' este mai mare decât ''cpu cores'', SMT (hyperthreading) este activ și CPU-urile logice partajează nuclee fizice
  
 Numără rapid CPU-urile logice: Numără rapid CPU-urile logice:
Linia 54: Linia 54:
 ==== /proc/meminfo ==== ==== /proc/meminfo ====
  
-De aici preia =freedatele sale. Citind direct, obții mult mai multe detalii.+De aici preia ''free'' datele sale. Citind direct, obții mult mai multe detalii.
  
 <code bash> <code bash>
Linia 94: Linia 94:
 </code> </code>
  
-Două valori: secunde de la pornire și totalul de secunde în care toate CPU-urile au fost inactive. Util în scripturi când vrei uptime-ul fără a parsa ieșirea comenzii =uptime=.+Două valori: secunde de la pornire și totalul de secunde în care toate CPU-urile au fost inactive. Util în scripturi când vrei uptime-ul fără a parsa ieșirea comenzii ''uptime''.
  
 ==== /proc/stat ==== ==== /proc/stat ====
  
-Contoare brute de timp CPU, per CPU și agregat. Comenzile =topși =vmstatderivă procentele CPU prin eșantionarea acestui fișier de două ori și calcularea deltei.+Contoare brute de timp CPU, per CPU și agregat. Comenzile ''top'' și ''vmstat'' derivă procentele CPU prin eșantionarea acestui fișier de două ori și calcularea deltei.
  
 <code bash> <code bash>
Linia 104: Linia 104:
 </code> </code>
  
-Coloanele după =cpu=: user, nice, system, idle, iowait, irq, softirq, steal, guest, guest_nice. Coloana =iowaitmerită urmărită pe serverele cu I/O intens.+Coloanele după ''cpu'': user, nice, system, idle, iowait, irq, softirq, steal, guest, guest_nice. Coloana ''iowait'' merită urmărită pe serverele cu I/O intens.
  
 ==== /proc/diskstats ==== ==== /proc/diskstats ====
  
-Statistici I/O per dispozitiv. Aceasta este sursa pentru =iostat=.+Statistici I/O per dispozitiv. Aceasta este sursa pentru ''iostat''.
  
 <code bash> <code bash>
Linia 114: Linia 114:
 </code> </code>
  
-Câmpurile includ citiri/scrieri finalizate, sectoare citite/scrise și timp petrecut în I/O. Util pentru monitorizare scriptată fără a instala =sysstat=.+Câmpurile includ citiri/scrieri finalizate, sectoare citite/scrise și timp petrecut în I/O. Util pentru monitorizare scriptată fără a instala ''sysstat''.
  
 ==== /proc/net/ ==== ==== /proc/net/ ====
Linia 120: Linia 120:
 Un director plin de statistici de rețea. Câteva exemple notabile: Un director plin de statistici de rețea. Câteva exemple notabile:
  
-  * **=/proc/net/dev=** - contoare de octeți și pachete per interfață; sursă clasică pentru =ifconfigși utilă pentru statistici brute de interfață în scripturi +  * **''/proc/net/dev''** - contoare de octeți și pachete per interfață; sursă clasică pentru ''ifconfig'' și utilă pentru statistici brute de interfață în scripturi 
-  * **=/proc/net/tcpși =/proc/net/tcp6=** - conexiuni TCP active în format hexazecimal de nivel scăzut; unelte mai vechi precum =netstatcitesc direct acestea; =ssmodern folosește interfața netlink a nucleului, mai rapidă +  * **''/proc/net/tcp'' și ''/proc/net/tcp6''** - conexiuni TCP active în format hexazecimal de nivel scăzut; unelte mai vechi precum ''netstat'' citesc direct acestea; ''ss'' modern folosește interfața netlink a nucleului, mai rapidă 
-  * **=/proc/net/sockstat=** - sumar al utilizării socket-urilor: câte TCP, UDP și raw socket-uri sunt în uz +  * **''/proc/net/sockstat''** - sumar al utilizării socket-urilor: câte TCP, UDP și raw socket-uri sunt în uz 
-  * **=/proc/net/snmp=** - contoare SNMP inclusiv retransmisii, conexiuni eșuate și resetări+  * **''/proc/net/snmp''** - contoare SNMP inclusiv retransmisii, conexiuni eșuate și resetări
  
 Verifică utilizarea totală a socket-urilor: Verifică utilizarea totală a socket-urilor:
Linia 133: Linia 133:
 ===== Directoarele per-proces: /proc/PID/ ===== ===== Directoarele per-proces: /proc/PID/ =====
  
-Fiecare proces activ primește propriul director sub =/proc/denumit după PID. Acestea sunt de neprețuit pentru depanarea proceselor individuale fără a atașa un debugger.+Fiecare proces activ primește propriul director sub ''/proc/'' denumit după PID. Acestea sunt de neprețuit pentru depanarea proceselor individuale fără a atașa un debugger.
  
-Două scurtături te scutesc de căutarea PID-ului. =/proc/selfindică întotdeauna procesul care face citirea - foarte util în interiorul scripturilor:+Două scurtături te scutesc de căutarea PID-ului. ''/proc/self'' indică întotdeauna procesul care face citirea - foarte util în interiorul scripturilor:
  
 <code bash> <code bash>
Linia 142: Linia 142:
 </code> </code>
  
-Și =$$este PID-ul shell-ului curent, deci =/proc/$$/inspectează shell-ul în care tastezi:+Și ''$$'' este PID-ul shell-ului curent, deci ''/proc/$$/'' inspectează shell-ul în care tastezi:
  
 <code bash> <code bash>
Linia 155: Linia 155:
 </code> </code>
  
-Pentru un serviciu precum nginx sau Apache, primul PID este de obicei procesul master (adesea rulând ca root), iar restul sunt procese worker. Această diferență de proprietar contează: dictează ce fișiere din directoarele =/procale acestora poți citi fără escaladare de privilegii.+Pentru un serviciu precum nginx sau Apache, primul PID este de obicei procesul master (adesea rulând ca root), iar restul sunt procese worker. Această diferență de proprietar contează: dictează ce fișiere din directoarele ''/proc'' ale acestora poți citi fără escaladare de privilegii.
  
 ==== /proc/PID/cmdline ==== ==== /proc/PID/cmdline ====
  
-Comanda exactă folosită pentru a lansa procesul, delimitată prin null. Util când =pstrunchiază listele de argumente lungi.+Comanda exactă folosită pentru a lansa procesul, delimitată prin null. Util când ''ps'' trunchiază listele de argumente lungi.
  
 <code bash> <code bash>
Linia 174: Linia 174:
 </code> </code>
  
-=VmRSSeste dimensiunea setului rezident: câtă memorie din cea mapată a procesului este în RAM în momentul respectiv. Rețineți că RSS poate include pagini partajate cu alte procese, deci nu este un total pur per-proces. =VmSwaparată dacă acest proces specific a fost trimis la swap.+''VmRSS'' este dimensiunea setului rezident: câtă memorie din cea mapată a procesului este în RAM în momentul respectiv. Rețineți că RSS poate include pagini partajate cu alte procese, deci nu este un total pur per-proces. ''VmSwap'' arată dacă acest proces specific a fost trimis la swap.
  
 ==== /proc/PID/fd/ ==== ==== /proc/PID/fd/ ====
  
-Un director de symlink-uri, câte unul pentru fiecare descriptor de fișier deschis. Aceasta este sursa de date pentru =lsof=.+Un director de symlink-uri, câte unul pentru fiecare descriptor de fișier deschis. Aceasta este sursa de date pentru ''lsof''.
  
 <code bash> <code bash>
Linia 190: Linia 190:
 </code> </code>
  
-Compară cu limita procesului din =/proc/12345/limitspentru a vedea dacă te apropii de plafonul de fișiere deschise. Contează pentru servicii cu conexiuni multe, precum nginx sau Redis.+Compară cu limita procesului din ''/proc/12345/limits'' pentru a vedea dacă te apropii de plafonul de fișiere deschise. Contează pentru servicii cu conexiuni multe, precum nginx sau Redis.
  
 ==== /proc/PID/io ==== ==== /proc/PID/io ====
Linia 200: Linia 200:
 </code> </code>
  
-=read_bytesși =write_bytesurmăresc octeții efectiv trecuți prin stratul de stocare, spre deosebire de =rcharși =wcharde deasupra lor, care numără octeții din apeluri de sistem read/write (inclusiv hit-uri de cache). Util pentru identificarea procesului care suprasolicită discurile când =iotopnu este disponibil.+''read_bytes'' și ''write_bytes'' urmăresc octeții efectiv trecuți prin stratul de stocare, spre deosebire de ''rchar'' și ''wchar'' de deasupra lor, care numără octeții din apeluri de sistem read/write (inclusiv hit-uri de cache). Util pentru identificarea procesului care suprasolicită discurile când ''iotop'' nu este disponibil.
  
 ==== /proc/PID/maps și /proc/PID/smaps ==== ==== /proc/PID/maps și /proc/PID/smaps ====
  
-=mapsafișează fiecare regiune de memorie mapată în proces: cod, stivă, heap, biblioteci partajate și fișiere mapate în memorie. =smapseste versiunea detaliată cu RSS, PSS și utilizare swap per regiune. Aceasta este sursa de date pentru unelte ca =smem=.+''maps'' afișează fiecare regiune de memorie mapată în proces: cod, stivă, heap, biblioteci partajate și fișiere mapate în memorie. ''smaps'' este versiunea detaliată cu RSS, PSS și utilizare swap per regiune. Aceasta este sursa de date pentru unelte ca ''smem''.
  
 <code bash> <code bash>
Linia 229: Linia 229:
 </code> </code>
  
-Astfel identifici binarul din spatele unui proces chiar dacă =cmdlinea fost modificat, sau dacă un proces rulează dintr-un fișier șters (frecvent la upgrade-urile de binare in-place). Verifică executabile șterse cu:+Astfel identifici binarul din spatele unui proces chiar dacă ''cmdline'' a fost modificat, sau dacă un proces rulează dintr-un fișier șters (frecvent la upgrade-urile de binare in-place). Verifică executabile șterse cu:
  
 <code bash> <code bash>
Linia 237: Linia 237:
 ==== /proc/PID/oom_score ==== ==== /proc/PID/oom_score ====
  
-Nucleul acordă un scor fiecărui proces pentru a ști pe cine să termine primul când memoria se epuizează. =/proc/PID/oom_scoreeste scorul curent, iar =/proc/PID/oom_score_adjeste ajustarea configurabilă (de la -1000 la 1000) pe care o setezi pentru a proteja sau sacrifica un proces.+Nucleul acordă un scor fiecărui proces pentru a ști pe cine să termine primul când memoria se epuizează. ''/proc/PID/oom_score'' este scorul curent, iar ''/proc/PID/oom_score_adj'' este ajustarea configurabilă (de la -1000 la 1000) pe care o setezi pentru a proteja sau sacrifica un proces.
  
 <code bash> <code bash>
Linia 244: Linia 244:
 </code> </code>
  
-Setează =oom_score_adjla =-1000pentru a exclude un proces complet din selecția OOM killer, sau folosește o valoare pozitivă pentru a face un job batch consumator de memorie mult mai probabil să fie ales primul.+Setează ''oom_score_adj'' la ''-1000'' pentru a exclude un proces complet din selecția OOM killer, sau folosește o valoare pozitivă pentru a face un job batch consumator de memorie mult mai probabil să fie ales primul.
  
 ===== /proc în containere ===== ===== /proc în containere =====
  
-=/proceste conștient de namespace-uri. Când ești înăuntrul unui container Docker, procfs reflectă namespace-ul PID al containerului, nu al gazdei. Deci =ls /procînăuntrul unui container arată doar procesele pe care containerul le poate vedea, iar PID 1 este entrypoint-ul containerului, nu init-ul gazdei.+''/proc'' este conștient de namespace-uri. Când ești înăuntrul unui container Docker, procfs reflectă namespace-ul PID al containerului, nu al gazdei. Deci ''ls /proc'' înăuntrul unui container arată doar procesele pe care containerul le poate vedea, iar PID 1 este entrypoint-ul containerului, nu init-ul gazdei.
  
 <code bash> <code bash>
Linia 256: Linia 256:
 </code> </code>
  
-Concluzia practică: nu presupune că un PID văzut înăuntrul unui container se mapează la același PID pe gazdă. Nu este așa. Nucleul translatează PID-urile între limitele de namespace, deci același proces are un PID pe gazdă și altul înăuntrul containerului. De aceea cifrele de memorie și CPU din =/proc/meminfoși =/proc/statînăuntrul unui container arată adesea totalurile gazdei, nu limitele containerului - exact motivul pentru care uneltele anterioare cgroup-urilor raportează greșit resursele în containere.+Concluzia practică: nu presupune că un PID văzut înăuntrul unui container se mapează la același PID pe gazdă. Nu este așa. Nucleul translatează PID-urile între limitele de namespace, deci același proces are un PID pe gazdă și altul înăuntrul containerului. De aceea cifrele de memorie și CPU din ''/proc/meminfo'' și ''/proc/stat'' înăuntrul unui container arată adesea totalurile gazdei, nu limitele containerului - exact motivul pentru care uneltele anterioare cgroup-urilor raportează greșit resursele în containere.
  
 ===== Scrierea în /proc/sys/ cu sysctl ===== ===== Scrierea în /proc/sys/ cu sysctl =====
  
-Fișierele din =/proc/sys/sunt parametri configurabili ai nucleului inscriptibili. Exact aceasta citește și scrie =sysctl=.+Fișierele din ''/proc/sys/'' sunt parametri configurabili ai nucleului inscriptibili. Exact aceasta citește și scrie ''sysctl''.
  
 <code bash> <code bash>
Linia 267: Linia 267:
 </code> </code>
  
-Aceasta este echivalentul lui =sysctl -w vm.swappiness=10=. Notă cu privire la =tee=: dacă scrii =sudo echo 10 > /proc/sys/vm/swappiness=, redirectarea este deschisă de shell înainte ca =sudosă escaladeze privilegiile, deci eșuează cu permission denied. Direcționarea prin =sudo teeeste modelul fiabil pentru orice fișier inscriptibil din =/proc=. Modificările sunt imediate, dar nu persistă la repornire. Pentru a le persista, scrie în =/etc/sysctl.confsau un fișier din =/etc/sysctl.d/=.+Aceasta este echivalentul lui ''sysctl -w vm.swappiness''10''. Notă cu privire la ''tee'': dacă scrii ''sudo echo 10 > /proc/sys/vm/swappiness'', redirectarea este deschisă de shell înainte ca ''sudo'' să escaladeze privilegiile, deci eșuează cu permission denied. Direcționarea prin ''sudo tee'' este modelul fiabil pentru orice fișier inscriptibil din ''/proc''. Modificările sunt imediate, dar nu persistă la repornire. Pentru a le persista, scrie în ''/etc/sysctl.conf'' sau un fișier din ''/etc/sysctl.d/=.
  
 Câțiva parametri utili: Câțiva parametri utili:
  
-  * **=/proc/sys/vm/swappiness=** - tendința nucleului de a folosi swap; intervalul este 0-200 (era 0-100 pe nucleele mai vechi), implicit 60; valorile peste 100 au sens cu backend-uri swap rapide precum zram sau zswap +  * **''/proc/sys/vm/swappiness''** - tendința nucleului de a folosi swap; intervalul este 0-200 (era 0-100 pe nucleele mai vechi), implicit 60; valorile peste 100 au sens cu backend-uri swap rapide precum zram sau zswap 
-  * **=/proc/sys/vm/vfs_cache_pressure=** - cât de agresiv să se recupereze obiectele director/inode din cache +  * **''/proc/sys/vm/vfs_cache_pressure''** - cât de agresiv să se recupereze obiectele director/inode din cache 
-  * **=/proc/sys/net/ipv4/ip_forward=** - activează IP forwarding (necesar pentru rutare, VPN-uri, Docker etc.) +  * **''/proc/sys/net/ipv4/ip_forward''** - activează IP forwarding (necesar pentru rutare, VPN-uri, Docker etc.) 
-  * **=/proc/sys/net/core/somaxconn=** - valoarea maximă pentru backlog-ul =listen()al socket-ului; nucleele moderne au implicit 4096; creșterea ajută workload-urile cu rafale mari de conexiuni +  * **''/proc/sys/net/core/somaxconn''** - valoarea maximă pentru backlog-ul ''listen()'' al socket-ului; nucleele moderne au implicit 4096; creșterea ajută workload-urile cu rafale mari de conexiuni 
-  * **=/proc/sys/fs/file-max=** - limita globală a sistemului pentru descriptori de fișiere deschisi +  * **''/proc/sys/fs/file-max''** - limita globală a sistemului pentru descriptori de fișiere deschisi 
-  * **=/proc/sys/kernel/pid_max=** - valoarea de wrap pentru alocarea PID-urilor; sistemele mai vechi aveau plafonul la 32768; sistemele moderne rulează mult mai sus, deci verifică în loc să presupui+  * **''/proc/sys/kernel/pid_max''** - valoarea de wrap pentru alocarea PID-urilor; sistemele mai vechi aveau plafonul la 32768; sistemele moderne rulează mult mai sus, deci verifică în loc să presupui
  
 ===== Rețete practice cu /proc ===== ===== Rețete practice cu /proc =====
Linia 282: Linia 282:
 Câteva comenzi utile în situații reale. Câteva comenzi utile în situații reale.
  
-**Găsește ce proces folosește un port specific** (fără =sssau =lsof=). Socket-ul inode-ului se află în =/proc/net/tcp*=, iar același inode apare ca symlink =socket:[inode]în directorul =fd/al fiecărui proces:+**Găsește ce proces folosește un port specific** (fără ''ss'' sau ''lsof''). Socket-ul inode-ului se află în ''/proc/net/tcp*'', iar același inode apare ca symlink ''socket:[inode]'' în directorul ''fd/'' al fiecărui proces:
  
 <code bash> <code bash>
-# Port în hex: 80 0050, 443 01BB. Coloana 10 este inode-ul.+# Port în hex: 80 '' 0050, 443 '' 01BB. Coloana 10 este inode-ul.
 inode=$(awk '$2 ~ /:01BB$/ {print $10; exit}' /proc/net/tcp6) inode=$(awk '$2 ~ /:01BB$/ {print $10; exit}' /proc/net/tcp6)
 ls -l /proc/*/fd/ 2>/dev/null | grep "socket:\[$inode\]" ls -l /proc/*/fd/ 2>/dev/null | grep "socket:\[$inode\]"
 </code> </code>
  
-**Verifică dacă un proces este throttled de cgroups**. Statisticile de throttling se află în =cpu.statal cgroup-ului, nu în =/proc/PID/sched=, deci găsește mai întâi cgroup-ul procesului:+**Verifică dacă un proces este throttled de cgroups**. Statisticile de throttling se află în ''cpu.stat'' al cgroup-ului, nu în ''/proc/PID/sched'', deci găsește mai întâi cgroup-ul procesului:
  
 <code bash> <code bash>
Linia 297: Linia 297:
 </code> </code>
  
-Un =nr_throttledîn creștere înseamnă că procesul atinge cota sa de CPU.+Un ''nr_throttled'' în creștere înseamnă că procesul atinge cota sa de CPU.
  
 **Găsește procese cu fișiere șterse deschise** (scurgeri de memorie de la rotația log-urilor sau upgrade-uri de binare): **Găsește procese cu fișiere șterse deschise** (scurgeri de memorie de la rotația log-urilor sau upgrade-uri de binare):
Linia 319: Linia 319:
 ===== /proc față de /sys ===== ===== /proc față de /sys =====
  
-Vei întâlni și =/sys=, un sistem de fișiere virtual separat numit sysfs. Dacă =/proceste orientat spre procese și de uz general, =/syseste structurat specific în jurul modelului de dispozitive al nucleului: drivere, magistrale, dispozitive bloc, management al energiei și topologie hardware.+Vei întâlni și ''/sys'', un sistem de fișiere virtual separat numit sysfs. Dacă ''/proc'' este orientat spre procese și de uz general, ''/sys'' este structurat specific în jurul modelului de dispozitive al nucleului: drivere, magistrale, dispozitive bloc, management al energiei și topologie hardware.
  
-De exemplu, scalarea frecvenței CPU se află în =/sys/devices/system/cpu/cpu0/cpufreq/=, nu în =/proc=. Setările scheduler-ului pentru dispozitive bloc sunt în =/sys/block/sda/queue/scheduler=. Sunt complementare - merită să le cunoști pe amândouă.+De exemplu, scalarea frecvenței CPU se află în ''/sys/devices/system/cpu/cpu0/cpufreq/'', nu în ''/proc''. Setările scheduler-ului pentru dispozitive bloc sunt în ''/sys/block/sda/queue/scheduler''. Sunt complementare - merită să le cunoști pe amândouă.
  
 ===== Concluzie ===== ===== Concluzie =====
  
-Odată ce te obișnuiești să citești direct din =/proc=, o mare parte din munca de performanță și depanare Linux devine mai curată. Nu mai depinzi de unelte instalate. Poți scrie scripturi de monitorizare mai rapide și mai simple. Și înțelegi exact ce fac uneltele de nivel înalt sub capotă.+Odată ce te obișnuiești să citești direct din ''/proc'', o mare parte din munca de performanță și depanare Linux devine mai curată. Nu mai depinzi de unelte instalate. Poți scrie scripturi de monitorizare mai rapide și mai simple. Și înțelegi exact ce fac uneltele de nivel înalt sub capotă.
  
-Fișierele-cheie de marcat: =/proc/meminfo==/proc/cpuinfo==/proc/stat==/proc/net/devși structura de directoare per-proces din =/proc/PID/=.+Fișierele-cheie de marcat: ''/proc/meminfo''''/proc/cpuinfo''''/proc/stat''''/proc/net/dev'' și structura de directoare per-proces din ''/proc/PID/''.
  
 ===== Vezi și ===== ===== Vezi și =====
  
   * [[https://www.kernel.org/doc/html/latest/filesystems/proc.html|Documentația oficială /proc a nucleului Linux]]   * [[https://www.kernel.org/doc/html/latest/filesystems/proc.html|Documentația oficială /proc a nucleului Linux]]
-  * [[linux:comenzi:top|Comanda top]] 
-  * [[linux:comenzi:free|Comanda free]] 
-  * [[linux:comenzi:ss|Comanda ss]] 
-  * [[linux:concepte:cgroups|Introducere în cgroups]] 
  
 ---- ----
 {{tag>linux proc kernel diagnosticare memorie procese sistem-fisiere monitorizare}} {{tag>linux proc kernel diagnosticare memorie procese sistem-fisiere monitorizare}}