Scroll to navigation

proc(5) File Formats Manual proc(5)

NUME

proc - pseudo- sistem de fișiere cu informații despre procese

DESCRIERE

Sistemul de fișiere proc este un pseudo-sistem de fișiere care oferă o interfață pentru structurile de date ale nucleului. Acesta este de obicei montat la /proc. De obicei, este montat automat de către sistem, dar poate fi montat și manual folosind o comandă precum:


mount -t proc proc /proc

Majoritatea fișierelor din sistemul de fișiere proc sunt numai pentru citire, dar unele fișiere sunt inscriptibile, permițând modificarea variabilelor nucleului.

Opțiuni de montare

Sistemul de fișiere proc acceptă următoarele opțiuni de montare:

Această opțiune controlează cine poate accesa informațiile din directoarele /proc/pid. Argumentul, n, este una dintre următoarele valori:
0
Oricine poate accesa toate directoarele /proc/pid. Acesta este comportamentul tradițional și implicit dacă această opțiune de montare nu este specificată.
1
Utilizatorii nu pot accesa fișierele și subdirectoarele din orice directoare /proc/pid, cu excepția propriilor directoare (directoarele /proc/pid rămân vizibile). Fișierele sensibile precum /proc/pid/cmdline și /proc/pid/status sunt acum protejate împotriva altor utilizatori. Acest lucru face imposibilă aflarea dacă un utilizator rulează un anumit program (atât timp cât programul nu se dezvăluie altfel prin comportamentul său).
2
Ca și în cazul modului 1, dar în plus directoarele /proc/pid aparținând altor utilizatori devin invizibile. Aceasta înseamnă că intrările /proc/pid nu mai pot fi utilizate pentru a descoperi PID-urile de pe sistem. Acest lucru nu ascunde faptul că există un proces cu o anumită valoare PID (acesta poate fi aflat prin alte mijloace, de exemplu, prin „kill -0 $PID”), dar ascunde UID și GID ale unui proces, care altfel ar putea fi aflat prin utilizarea stat(2) pe un director /proc/pid. Acest lucru complică foarte mult sarcina unui atacator de a aduna informații despre procesele care rulează (de exemplu, de a descoperi dacă un demon rulează cu privilegii ridicate, dacă un alt utilizator rulează un program sensibil, dacă alți utilizatori rulează orice program și așa mai departe).
Specifică ID-ul unui grup ai cărui membri sunt autorizați să afle informații despre proces, altfel interzise de hidepid (de exemplu, utilizatorii din acest grup se comportă ca și cum /proc ar fi fost montat cu hidepid=0). Acest grup ar trebui utilizat în locul unor abordări precum introducerea utilizatorilor nonroot în fișierul sudoers(5).

Prezentare generală

Sub /proc, există următoarele grupuri generale de fișiere și subdirectoare:

Fiecare dintre aceste subdirectoare conține fișiere și subdirectoare care prezintă informații despre procesul cu ID-ul de proces corespunzător.
Sub fiecare dintre directoarele /proc/pid, un subdirector task conține subdirectoare de forma task/tid, care conțin informații corespunzătoare despre fiecare dintre firele de execuție din proces, unde tid este ID-ul firului de execuție al nucleului.
Subdirectoarele /proc/pid sunt vizibile la iterarea prin /proc cu getdents(2) (și astfel sunt vizibile atunci când se utilizează ls(1) pentru a vizualiza conținutul /proc).
Fiecare dintre aceste subdirectoare conține fișiere și subdirectoare care expun informații despre firul cu ID-ul firului corespunzător. Conținutul acestor directoare este același cu cel al directoarelor /proc/pid/task/tid corespunzătoare.
Subdirectoarele /proc/tid nu sunt vizibile la iterarea prin /proc cu getdents(2) (și astfel nu sunt vizibile atunci când se utilizează ls(1) pentru a vizualiza conținutul /proc).
/proc/self
Atunci când un proces accesează această legătură simbolică magică, aceasta se rezolvă în directorul /proc/pid propriu procesului.
/proc/thread-self
Atunci când un fir de execuție accesează această legătură simbolică magică, se rezolvă în directorul /proc/self/task/tid propriu procesului.
/proc/[a-z]*
Diverse alte fișiere și subdirectoare de sub /proc expun informații la nivel de sistem.

Toate cele de mai sus sunt descrise mai detaliat în continuare.

Fișiere și directoare

Lista următoare oferă detalii despre multe dintre fișierele și directoarele din ierarhia /proc.

/proc/pid
Există un subdirector numeric pentru fiecare proces în desfășurare; subdirectorul este denumit după ID-ul procesului. Fiecare subdirector /proc/pid conține pseudofișierele și directoarele descrise mai jos.
Fișierele din interiorul fiecărui director /proc/pid sunt în mod normal deținute de utilizatorul efectiv și de ID-ul de grup efectiv al procesului. Cu toate acestea, ca măsură de securitate, proprietarul este root:root dacă atributul „dumpable” al procesului este stabilit la o valoare diferită de 1.
Înainte de Linux 4.11, root:root însemna ID-ul „global” al utilizatorului root și ID-ul grupului (adică UID 0 și GID 0 în spațiul de nume inițial al utilizatorului). Începând cu Linux 4.11, dacă procesul se află într-un spațiu de nume de utilizator neinițial care are o corespondență validă pentru ID-ul de utilizator (grup) 0 în interiorul spațiului de nume, atunci proprietatea de utilizator (grup) a fișierelor de sub /proc/pid este în schimb aceeași cu ID-ul de utilizator (grup) root din spațiul de nume. Aceasta înseamnă că, în interiorul unui container, lucrurile funcționează conform așteptărilor pentru utilizatorul „root” al containerului.
Atributul „dumpable” al procesului se poate modifica din următoarele motive:
Atributul a fost activat explicit prin operația prctl(2) PR_SET_DUMPABLE.
Atributul a fost restabilit la valoarea din fișierul /proc/sys/fs/suid_dumpable (descris mai jos), din motivele descrise în prctl(2).
Restabilirea atributului „dumpable” la 1 restabilește proprietatea fișierelor /proc/pid/* la UID și GID efective ale procesului. Cu toate acestea, rețineți că, dacă UID sau GID efective sunt modificate ulterior, atributul „dumpable” poate fi reinițializat, astfel cum este descris în prctl(2). Prin urmare, poate fi de dorit să se redefinească atributul „dumpable” după efectuarea oricăror modificări dorite ale UID sau GID efective ale procesului.
/proc/pid/attr
Fișierele din acest director oferă o interfață API pentru modulele de securitate. Conținutul acestui director sunt fișiere care pot fi citite și scrise pentru a stabili atribute legate de securitate. Acest director a fost adăugat pentru a asigura suport pentru SELinux, dar intenția a fost ca API-ul să fie suficient de general pentru a asigura suport pentru alte module de securitate. În scopul explicării, mai jos sunt furnizate exemple ale modului în care SELinux utilizează aceste fișiere.
Acest director este prezent numai dacă nucleul a fost configurat cu CONFIG_SECURITY.
/proc/pid/attr/current (începând cu Linux 2.6.0)
Conținutul acestui fișier reprezintă atributele actuale de securitate ale procesului.
În SELinux, acest fișier este utilizat pentru a obține contextul de securitate al unui proces. Înainte de Linux 2.6.11, acest fișier nu putea fi utilizat pentru a stabili contextul de securitate (o scriere era întotdeauna refuzată), deoarece SELinux limita tranzițiile de securitate ale proceselor la execve(2) (a se vedea descrierea /proc/pid/attr/exec, mai jos). Începând cu Linux 2.6.11, SELinux a eliminat această restricție și a început să ofere suport pentru operațiile „set” prin intermediul scrierilor în acest nod, dacă sunt autorizate de politică, deși utilizarea acestei operații este adecvată numai pentru aplicațiile care sunt de încredere pentru a menține orice separare dorită între vechiul și noul context de securitate.
Înainte de Linux 2.6.28, SELinux nu permitea firelor dintr-un proces cu mai multe fire să își stabilească contextul de securitate prin intermediul acestui nod, deoarece acest lucru ar produce o inconsecvență între contextele de securitate ale firelor care împart același spațiu de memorie. Începând cu Linux 2.6.28, SELinux a eliminat această restricție și a început să ofere suport pentru operațiile „set” pentru firele de execuție din cadrul unui proces cu mai multe fire de execuție dacă noul context de securitate este delimitat de vechiul context de securitate, unde relația delimitată este definită în politică și garantează că noul context de securitate are un subset de permisiuni ale vechiului context de securitate.
Alte module de securitate pot alege să ofere suport pentru operațiile „set” prin scrierea în acest nod.
/proc/pid/attr/exec (începând cu Linux 2.6.0)
Acest fișier reprezintă atributele care urmează să fie atribuite procesului la o execve(2) ulterioară.
În SELinux, acest lucru este necesar pentru a gestiona tranzițiile de rol/domeniu, iar execve(2) este punctul preferat pentru a efectua astfel de tranziții deoarece oferă un control mai bun asupra inițializării procesului în noua etichetă de securitate și asupra moștenirii stării. În SELinux, acest atribut este reinițializat în execve(2), astfel încât noul program revine la comportamentul implicit pentru orice apel execve(2) pe care îl poate efectua. În SELinux, un proces își poate stabili numai propriul atribut /proc/pid/attr/exec.
/proc/pid/attr/fscreate (începând cu Linux 2.6.0)
Acest fișier reprezintă atributele care trebuie atribuite fișierelor create prin apeluri ulterioare la open(2), mkdir(2), symlink(2) și mknod(2)
SELinux utilizează acest fișier pentru a asigura suportul creării unui fișier (utilizând apelurile de sistem menționate anterior) într-o stare sigură, astfel încât să nu existe riscul obținerii unui acces necorespunzător între momentul creării și momentul în care sunt stabilite atributele. În SELinux, acest atribut este restabilit în execve(2), astfel încât noul program revine la comportamentul implicit pentru toate apelurile de creare a fișierelor pe care le poate efectua, dar atributul va persista în mai multe apeluri de creare a fișierelor în cadrul unui program, cu excepția cazului în care este restabilit în mod explicit. În SELinux, un proces își poate stabili doar propriul atribut /proc/pid/attr/fscreate.
/proc/pid/attr/keycreate (începând cu Linux 2.6.18)
Dacă un proces scrie un context de securitate în acest fișier, toate cheile create ulterior (add_key(2)) vor fi etichetate cu acest context. Pentru informații suplimentare, consultați fișierul sursă al nucleului Documentation/security/keys/core.rst (sau fișierul Documentation/security/keys.txt între Linux 3.0 și Linux 4.13, sau Documentation/keys.txt înainte de Linux 3.0).
/proc/pid/attr/prev (începând cu Linux 2.6.0)
Acest fișier conține contextul de securitate al procesului înainte de ultimul execve(2); adică, valoarea anterioară a /proc/pid/attr/current.
/proc/pid/attr/socketcreate (începând cu Linux 2.6.18)
Dacă un proces scrie un context de securitate în acest fișier, toate soclurile create ulterior vor fi etichetate cu acest context.
/proc/pid/autogroup (începând cu Linux 2.6.38)
A se vedea sched(7).
/proc/pid/auxv (începând cu Linux 2.6.0)
Acest fișier conține conținutul informațiilor interpretului ELF transmise procesului în momentul execuției. Formatul este un ID unsigned long plus o valoare unsigned long pentru fiecare intrare. Ultima intrare conține două zerouri. A se vedea și getauxval(3).
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/cgroup (începând cu Linux 2.6.24)
A se vedea cgroups(7).
/proc/pid/clear_refs (începând cu Linux 2.6.22)
Acesta este un fișier numai-pentru-scriere, ce poate fi scris numai de către proprietarul procesului.
Următoarele valori pot fi scrise în fișier:
1 (începând cu Linux 2.6.22)
Reinițializează biții PG_Referenced și ACCESSED/YOUNG pentru toate paginile asociate cu procesul; (înainte de Linux 2.6.32, scrierea oricărei valori diferite de zero în acest fișier avea acest efect).
2 (începând cu Linux 2.6.32)
Reinițializează biții PG_Referenced și ACCESSED/YOUNG pentru toate paginile anonime asociate cu procesul.
3 (începând cu Linux 2.6.32)
Reinițializează biții PG_Referenced și ACCESSED/YOUNG pentru toate paginile asociate cu fișierul asociate procesului.
Ștergerea biților PG_Referenced și ACCESSED/YOUNG oferă o metodă de măsurare aproximativă a cantității de memorie utilizată de un proces. Se inspectează mai întâi valorile din câmpurile „Referenced” pentru VMA-urile prezentate în /proc/pid/smaps pentru a obține o idee despre amprenta de memorie a procesului. Se șterg apoi biții PG_Referenced și ACCESSED/YOUNG și, după un anumit interval de timp măsurat, se inspectează din nou valorile din câmpurile „Referenced” pentru a obține o idee despre modificarea amprentei de memorie a procesului în timpul intervalului măsurat. Dacă se dorește doar inspectarea tipurilor de corespondență selectate, se poate utiliza valoarea 2 sau 3 în loc de 1.
Alte valori pot fi scrise pentru a afecta diferite proprietăți:
4 (începând cu Linux 3.11)
Șterge bitul „soft-dirty” pentru toate paginile asociate cu procesul. Acesta este utilizat (împreună cu /proc/pid/pagemap) de sistemul de restaurare a punctelor de control pentru a descoperi ce pagini ale unui proces au fost murdărite de când a fost scris fișierul /proc/pid/clear_refs.
5 (începând cu Linux 4.0)
Reinițializează dimensiunea maximă a setului rezident („high water mark”) la valoarea curentă a dimensiunii setului rezident al procesului.
Scrierea oricărei valori în /proc/pid/clear_refs alta decât cele enumerate mai sus nu are niciun efect.
Fișierul /proc/pid/clear_refs este prezent numai dacă opțiunea de configurare a nucleului CONFIG_PROC_PAGE_MONITOR este activată.
/proc/pid/cmdline
Acest fișier numai-pentru-citire conține linia de comandă completă pentru proces, cu excepția cazului în care procesul este un zombie. În acest din urmă caz, nu există nimic în acest fișier: adică, o citire a acestui fișier va returna 0 caractere. Argumentele liniei de comandă apar în acest fișier ca un set de șiruri separate prin octeți nuli („\0”), cu un alt octet nul după ultimul șir.
Dacă, după un execve(2), procesul își modifică șirurile argv, aceste modificări vor apărea aici. Aceasta nu este același lucru cu modificarea matricei argv.
În plus, un proces poate modifica locația de memorie la care se referă acest fișier prin intermediul operațiilor prctl(2), cum ar fi PR_SET_MM_ARG_START.
Gândiți-vă la acest fișier ca la linia de comandă pe care procesul dorește să o vedeți.
/proc/pid/comm (începând cu Linux 2.6.33)
Acest fișier expune valoarea comm a procesului -- adică numele comenzii asociate procesului. Fire diferite din același proces pot avea valori comm diferite, accesibile prin /proc/pid/task/tid/comm. Un fir își poate modifica valoarea comm sau pe cea a oricărui alt fir din același grup de fire (a se vedea discuția despre CLONE_THREAD în clone(2)), prin scrierea în fișierul /proc/self/task/tid/comm. Șirurile mai lungi de TASK_COMM_LEN (16) caractere (inclusiv octetul nul de terminare) sunt trunchiate silențios.
Acest fișier oferă un superset al operațiunilor PR_SET_NAME și PR_GET_NAME din prctl(2) și este utilizat de pthread_setname_np(3) atunci când este folosit pentru a redenumi alte fire decât apelantul. Valoarea din acest fișier este utilizată pentru specificatorul %e în /proc/sys/kernel/core_pattern; consultați core(5).
/proc/pid/coredump_filter (începând cu Linux 2.6.23)
A se vedea core(5).
/proc/pid/cpuset (începând cu Linux 2.6.12)
A se vedea cpuset(7).
/proc/pid/cwd
Aceasta este o legătură simbolică către directorul curent de lucru al procesului. Pentru a afla directorul curent de lucru al procesului 20, de exemplu, puteți face acest lucru:

$ cd /proc/20/cwd; pwd -P
    

Într-un proces cu mai multe fire de execuție, conținutul acestei legături simbolice nu este disponibil dacă firul de execuție principal s-a încheiat deja (de obicei prin apelarea pthread_exit(3)).
Permisiunea de a dereferenția sau citi (readlink(2)) această legătură simbolică este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/environ
Acest fișier conține mediul inițial care a fost stabilit atunci când programul care se execută în prezent a fost inițiat prin execve(2). Intrările sunt separate prin octeți nuli („\0”), iar la sfârșit poate exista un octet nul. Astfel, pentru a afișa mediul procesului 1, ar trebui să faceți:

$ cat /proc/1/environ | tr '\000' '\n'
    

Dacă, după execve(2), procesul își modifică mediul (de exemplu, apelând funcții precum putenv(3) sau modificând direct variabila environ(7)), acest fișier nu va reflecta aceste modificări.
În plus, un proces poate modifica locația de memorie la care se referă acest fișier prin operații prctl(2) precum PR_SET_MM_ENV_START.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/exe
În Linux 2.2 și versiunile ulterioare, acest fișier este o legătură simbolică care conține ruta reală a comenzii executate. Această legătură simbolică poate fi dereferențiată în mod normal; încercarea de a o deschide va deschide executabilul. Puteți chiar tasta /proc/pid/exe pentru a rula o altă copie a aceluiași executabil care este rulat de procesul pid. Dacă numele rutei a fost dezlegat(șters), legătura simbolică va conține șirul „(deleted)” adăugat la numele rutei originale. Într-un proces cu mai multe fire de execuție, conținutul acestei legături simbolice nu este disponibil dacă firul de execuție principal s-a încheiat deja (de obicei prin apelarea pthread_exit(3)).
Permisiunea de a dereferenția sau citi (readlink(2)) această legătură simbolică este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
În Linux 2.0 și anterior, /proc/pid/exe este un indicator către binarul care a fost executat și apare ca o legătură simbolică. Un apel readlink(2) la acest fișier sub Linux 2.0 returnează un șir în formatul:

[dispozitiv]:nod-i
    

De exemplu, [0301]:1502 ar fi nodul-i 1502 pe dispozitivul cu numărul major 03 (al unității IDE, MFM etc.) și numărul minor 01 (prima partiție de pe prima unitate).
find(1) cu opțiunea -inum poate fi utilizat pentru a localiza fișierul.
/proc/pid/fd/
Acesta este un subdirector care conține o intrare pentru fiecare fișier pe care procesul îl are deschis, numit prin descriptorul său de fișier, și care este o legătură simbolică către fișierul real. Astfel, 0 este intrarea standard, 1 ieșirea standard, 2 ieșirea de eroare standard și așa mai departe.
Pentru descriptorii de fișiere pentru conducte și socluri, intrările vor fi legături simbolice al căror conținut este tipul de fișier cu nodul-i. Un apel readlink(2) pe acest fișier returnează un șir de caractere în formatul:

type:[nod-i]
    

De exemplu, socket:[2248868] va fi un soclu, iar nodul-i al său este 2248868. Pentru socluri, acest nod-i poate fi utilizat pentru a găsi mai multe informații în unul dintre fișierele de sub /proc/net/.
Pentru descriptorii de fișier care nu au un nod-i corespondent (de exemplu, descriptorii de fișier produși de bpf(2), epoll_create(2), eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2), timerfd_create(2) și userfaultfd(2)), intrarea va fi o legătură simbolică cu conținutul de forma

anon_inode:tip-fișier
    

În multe cazuri (dar nu în toate), tip-fișier este încadrat între paranteze drepte.
De exemplu, un descriptor de fișier epoll va avea o legătură simbolică al cărei conținut este șirul anon_inode:[eventpoll].
Într-un proces cu mai multe fire de execuție, conținutul acestui director nu este disponibil dacă firul de execuție principal s-a încheiat deja (de obicei prin apelarea pthread_exit(3)).
Programele care primesc un nume de fișier ca argument al liniei de comandă, dar nu primesc intrare de la intrarea standard dacă nu este furnizat niciun argument, și programele care scriu într-un fișier numit ca argument al liniei de comandă, dar nu își trimit ieșirea la ieșirea standard dacă nu este furnizat niciun argument, pot fi totuși făcute să utilizeze intrarea standard sau ieșirea standard prin utilizarea fișierelor /proc/pid/fd ca argumente ale liniei de comandă. De exemplu, presupunând că -i este fanionul care desemnează un fișier de intrare și -o este fanionul care desemnează un fișier de ieșire:

$ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
    

și aveți un filtru funcțional.
/proc/self/fd/N este aproximativ la fel ca /dev/fd/N în unele sisteme UNIX și sisteme de tip UNIX. De fapt, majoritatea scripturilor Linux MAKEDEV leagă simbolic /dev/fd de /proc/self/fd.
Majoritatea sistemelor oferă legături simbolice /dev/stdin, /dev/stdout și /dev/stderr, care fac legătura cu fișierele 0, 1 și 2 din /proc/self/fd. Astfel, exemplul de comandă de mai sus ar putea fi scris după cum urmează:

$ foobar -i /dev/stdin -o /dev/stdout ...
    

Permisiunea de a dereferenția sau de a citi (readlink(2)) legăturile simbolice din acest director este guvernată de o verificare a modului de acces ptrace PTRACE_MODE_READ_FSCREDS; consultați ptrace(2).
Rețineți că pentru descriptorii de fișiere care se referă la noduri-i (conducte și socluri, a se vedea mai sus), acele noduri-i au în continuare biți de permisiune și informații de proprietate distincte de cele ale intrării /proc/pid/fd și că proprietarul poate fi diferit de ID-urile de utilizator și de grup ale procesului. Un proces neprivilegiat poate să nu aibă permisiunea de a le deschide, ca în acest exemplu:

$ echo test | sudo -u nobody cat
test
$ echo test | sudo -u nobody cat /proc/self/fd/0
cat: /proc/self/fd/0: Permission denied
    

Descriptorul de fișier 0 se referă la conducta creată de shell și deținută de utilizatorul acelui shell, care nu este nobody, deci cat nu are permisiunea de a crea un nou descriptor de fișier pentru a citi din acel nod-i, chiar dacă poate citi în continuare din descriptorul de fișier 0 existent.
/proc/pid/fdinfo/ (începând cu Linux 2.6.22)
Acesta este un subdirector care conține o intrare pentru fiecare fișier pe care procesul îl are deschis, numit prin descriptorul său de fișier. Fișierele din acest director pot fi citite numai de către proprietarul procesului. Conținutul fiecărui fișier poate fi citit pentru a obține informații despre descriptorul de fișier corespunzător. Conținutul depinde de tipul de fișier menționat de descriptorul de fișier corespunzător.
Pentru fișierele și directoarele obișnuite, vom vedea ceva asemănător cu:

$ cat /proc/12015/fdinfo/4
pos:    1000
flags:  01002002
mnt_id: 21
    

Câmpurile sunt următoarele:
Acesta este un număr zecimal care arată decalajul fișierului.
Acesta este un număr octal care afișează modul de acces la fișier și indicatoarele de stare ale fișierului (a se vedea open(2)). Dacă fanionul descriptorului de fișier close-on-exec este activat, atunci flags va include și valoarea O_CLOEXEC.
Înainte de Linux 3.1, acest câmp afișa în mod incorect valoarea O_CLOEXEC la momentul deschiderii fișierului, în loc de valoarea curentă a fanionului close-on-exec.
Acest câmp, prezent de la Linux 3.15, este ID-ul montării care conține acest fișier. A se vedea descrierea /proc/pid/mountinfo.
Pentru descriptorii de fișier eventfd (a se vedea eventfd(2)), vedem (începând cu Linux 3.8) următoarele câmpuri:

pos:	0
flags:	02
mnt_id:	10
eventfd-count:               40
    

eventfd-count este valoarea curentă a contorului eventfd, în hexazecimal.
Pentru descriptorii de fișiere epoll (vezi epoll(7)), vedem (începând cu Linux 3.8) următoarele câmpuri:

pos:	0
flags:	02
mnt_id:	10
tfd:        9 events:       19 data: 74253d2500000009
tfd:        7 events:       19 data: 74253d2500000007
    

Fiecare dintre liniile care încep cu tfd descrie unul dintre descriptorii de fișier monitorizați prin intermediul descriptorului de fișier epoll (a se vedea epoll_ctl(2) pentru mai multe detalii). Câmpul tfd este numărul descriptorului de fișier. Câmpul events este o mască hexazecimală a evenimentelor monitorizate pentru acest descriptor de fișier. Câmpul data este valoarea datelor asociate cu acest descriptor de fișier.
Pentru descriptorii de fișiere signalfd (a se vedea signalfd(2)), vedem (începând cu Linux 3.8) următoarele câmpuri:

pos:	0
flags:	02
mnt_id:	10
sigmask:	0000000000000006
    

sigmask este masca hexazecimală a semnalelor care sunt acceptate prin intermediul acestui descriptor de fișier signalfd; (în acest exemplu, biții 2 și 3 sunt definiți, corespunzând semnalelor SIGINT și SIGQUIT; consultați signal(7)).
Pentru descriptorii de fișiere inotify (a se vedea inotify(7)), vedem (începând cu Linux 3.8) următoarele câmpuri:

pos:	0
flags:	00
mnt_id:	11
inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
    

Fiecare dintre liniile care încep cu „inotify” afișează informații despre un fișier sau un director care este monitorizat. Câmpurile din această linie sunt după cum urmează:
Un număr de descriptor de ceas (în zecimal).
Numărul nodului-i al fișierului țintă (în hexazecimal).
ID-ul dispozitivului în care se află fișierul țintă (în hexazecimal).
Masca de evenimente monitorizate pentru fișierul țintă (în hexazecimal).
Dacă nucleul a fost construit cu suport exportfs, ruta către fișierul țintă este expusă ca un gestionar de fișier, prin intermediul a trei câmpuri hexazecimale: fhandle-bytes, fhandle-type și f_handle.
Pentru descriptorii de fișiere fanotify (a se vedea fanotify(7)), vedem (începând cu Linux 3.8) următoarele câmpuri:

pos:	0
flags:	02
mnt_id:	11
fanotify flags:0 event-flags:88002
fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
    

A patra linie afișează informațiile definite atunci când grupul fanotify a fost creat prin fanotify_init(2):
Argumentul flags dat la fanotify_init(2) (exprimat în hexazecimal).
Argumentul event_f_flags dat la fanotify_init(2) (exprimat în hexazecimal).
Fiecare linie suplimentară prezentată în fișier conține informații despre una dintre mărcile din grupul fanotify. Cele mai multe dintre aceste câmpuri sunt ca pentru inotify, cu excepția:
Fanioanele asociate mărcii (exprimate în hexazecimal).
Masca evenimentelor pentru această marcă (exprimată în hexazecimal).
Masca de evenimente care sunt ignorate pentru această marcă (exprimată în hexazecimal).
Pentru detalii privind aceste câmpuri, a se vedea fanotify_mark(2).
Pentru descriptorii de fișier timerfd (a se vedea timerfd(2)), vedem (începând cu Linux 3.17) următoarele câmpuri:

pos:    0
flags:  02004002
mnt_id: 13
clockid: 0
ticks: 0
settime flags: 03
it_value: (7695568592, 640020877)
it_interval: (0, 0)
    

Aceasta este valoarea numerică a ID-ului ceasului (corespunzător uneia dintre constantele CLOCK_* definite prin <time.h>) care este utilizat pentru a marca progresul temporizatorului (în acest exemplu, 0 este CLOCK_REALTIME).
Acesta este numărul de expirări ale cronometrului care au avut loc (de exemplu, valoarea pe care read(2) ar returna-o).
Acest câmp enumeră fanioanele cu care timerfd a fost armat ultima dată (a se vedea timerfd_settime(2)), în octal (în acest exemplu, atât TFD_TIMER_ABSTIME cât și TFD_TIMER_CANCEL_ON_SET sunt activate).
Acest câmp conține perioada de timp până la următoarea expirare a temporizatorului, exprimată în secunde și nanosecunde. Aceasta este întotdeauna exprimată ca o valoare relativă, indiferent dacă temporizatorul a fost creat utilizând indicatorul TFD_TIMER_ABSTIME.
Acest câmp conține intervalul temporizatorului, în secunde și nanosecunde; (câmpurile it_value și it_interval conțin valorile pe care le-ar returna timerfd_gettime(2) pe acest descriptor de fișier).
/proc/pid/gid_map (începând cu Linux 3.5)
A se vedea user_namespaces(7).
/proc/pid/io (începând cu Linux 2.6.20)
Acest fișier conține statistici de In/Ieș pentru proces, de exemplu:

# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
    

Câmpurile sunt următoarele:
Numărul de octeți pe care această sarcină i-a făcut să fie citiți din memorie. Aceasta este pur și simplu suma de octeți pe care acest proces i-a transmis către read(2) și alte apeluri de sistem similare. Aceasta include lucruri precum In/Ieș de terminal și nu este afectată de faptul dacă a fost sau nu necesară o In/Ieș reală de disc fizic (citirea ar fi putut fi satisfăcută din pagecache).
Numărul de octeți pe care această sarcină i-a făcut sau îi va face să fie scriși pe disc. Aici se aplică aceleași avertismente ca în cazul rchar.
Încearcă să numere numărul de operații de citire de In/Ieș - adică apeluri de sistem precum read(2) și pread(2).
Încearcă să numere numărul de operații de scriere de In/Ieș - adică apeluri de sistem precum write(2) și pwrite(2).
Încearcă să numere numărul de octeți pe care acest proces i-a făcut cu adevărat să fie preluați din stratul de stocare. Acest lucru este corect pentru sistemele de fișiere cu suport de blocuri.
Încearcă să numere numărul de octeți pe care acest proces i-a făcut să fie trimiși la stratul de stocare.
Marea inexactitate aici este truncarea. Dacă un proces scrie 1 Mo într-un fișier și apoi șterge fișierul, de fapt nu va efectua nicio scriere. Dar va fi contabilizat ca și cum ar fi cauzat 1 Mo de scriere. Cu alte cuvinte: acest câmp reprezintă numărul de octeți pe care acest proces i-a făcut să nu se întâmple, truncând pagecache. O sarcină poate provoca și In/Ieș „negative”. Dacă această sarcină trunchiază o anumită pagecache murdară, o anumită In/Ieș pentru care o altă sarcină a fost contabilizată (în write_bytes a acesteia) nu va avea loc.
Notă: În implementarea actuală, lucrurile sunt un pic mai complicate pe sistemele pe 32 de biți: dacă procesul A citește /proc/pid/io al procesului B în timp ce procesul B actualizează unul dintre aceste contoare pe 64 de biți, procesul A ar putea vedea un rezultat intermediar.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/limits (începând cu Linux 2.6.24)
Acest fișier afișează limita flexibilă, limita strictă și unitățile de măsură pentru fiecare dintre limitele de resurse ale procesului (consultați getrlimit(2)). Până la și inclusiv Linux 2.6.35, acest fișier este protejat pentru a permite citirea numai de către UID-ul real al procesului. Începând din Linux 2.6.36, acest fișier poate fi citit de toți utilizatorii din sistem.
/proc/pid/map_files/ (începând cu Linux 3.3)
Acest subdirector, conține intrările corespunzătoare fișierelor cartografiate în memorie (a se vedea mmap(2)). Intrările sunt denumite în funcție de perechea de adrese de început și de sfârșit ale regiunii de memorie (exprimate ca numere hexazecimale) și sunt legături simbolice către fișierele cartografiate în sine. Iată un exemplu, cu rezultatul încadrat și reformatat pentru a se potrivi pe un afișaj cu 80 de coloane:

# ls -l /proc/self/map_files/
lr--------. 1 root root 64 Apr 16 21:31

3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so ...

Deși aceste intrări sunt prezente pentru regiunile de memorie care au fost cartografiate cu indicativul MAP_FILE, modul în care memoria partajată anonimă (regiuni create cu indicativele MAP_ANON | MAP_SHARED) este implementată în Linux înseamnă că astfel de regiuni apar și în acest director. Iată un exemplu în care fișierul țintă este cel șters /dev/zero:

lrw-------. 1 root root 64 Apr 16 21:33

7fc075d2f000-7fc075e6f000 -> /dev/zero (șters)

Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
Până la Linux 4.3, acest director apărea numai dacă opțiunea de configurare a nucleului CONFIG_CHECKPOINT_RESTORE era activată.
Sunt necesare capacități pentru a citi conținutul legăturilor simbolice din acest director: înainte de Linux 5.9, procesul de citire necesită CAP_SYS_ADMIN în spațiul de nume al utilizatorului inițial; de la Linux 5.9, procesul de citire trebuie să aibă fie CAP_SYS_ADMIN, fie CAP_CHECKPOINT_RESTORE în spațiul de nume al utilizatorului în care se află.
/proc/pid/maps
Un fișier care conține regiunile de memorie cartografiate în prezent și permisiunile lor de acces. Consultați mmap(2) pentru informații suplimentare despre cartografierea memoriei.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
Formatul fișierului este următorul:

adresă           permis poziție disp  nod-i       nume-rută
00400000-00452000 r-xp 00000000 08:02 173521      /usr/bin/dbus-daemon
00651000-00652000 r--p 00051000 08:02 173521      /usr/bin/dbus-daemon
00652000-00655000 rw-p 00052000 08:02 173521      /usr/bin/dbus-daemon
00e03000-00e24000 rw-p 00000000 00:00 0           [heap]
00e24000-011f7000 rw-p 00000000 00:00 0           [heap]
...
35b1800000-35b1820000 r-xp 00000000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a20000-35b1a21000 rw-p 00020000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a21000-35b1a22000 rw-p 00000000 00:00 0
35b1c00000-35b1dac000 r-xp 00000000 08:02 135870  /usr/lib64/libc-2.15.so
35b1dac000-35b1fac000 ---p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870  /usr/lib64/libc-2.15.so
...
f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0    [stack:986]
...
7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0   [stack]
7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0   [vdso]
    

Câmpul adresă este spațiul de adrese din proces ocupat de cartografiere. Câmpul permis este un set de permisiuni:

r = citire
w = scriere
x = execuție
s = partajare
p = privată (copie la scriere)
    

Câmpul poziție este poziția în fișier sau altceva; disp este dispozitivul (major:minor); nod-i este nodul-i pe dispozitivul respectiv. 0 indică faptul că niciun nod-i nu este asociat cu regiunea de memorie, cum ar fi cazul BSS (date neinițializate).
Câmpul nume-rută va fi de obicei fișierul care conține cartografierea. Pentru fișierele ELF, vă puteți coordona cu ușurință cu câmpul poziție uitându-vă la câmpul Offset din anteturile programului ELF (readelf -l).
Există pseudo-rute suplimentare utile:
[stack]
Stiva procesului inițial (cunoscută și ca firul principal).
[stack:tid] (de la Linux 3.4 la Linux 4.4)
Stiva unui fir (unde tid este un ID al firului). Acesta corespunde rutei /proc/pid/task/tid/. Acest câmp a fost eliminat în Linux 4.5, deoarece furnizarea acestor informații pentru un proces cu un număr mare de fire este costisitoare.
[vdso]
Obiectul partajat virtual legat dinamic. A se vedea vdso(7).
[heap]
Grămada procesului.
[anon:nume] (începând cu Linux 5.17)
O cartografiere anonimă privată cu nume. Definită cu prctl(2) PR_SET_VMA_ANON_NAME.
[anon_shmem:nume] (începând cu Linux 6.2)
O cartografiere anonimă partajată cu nume. Definită cu prctl(2) PR_SET_VMA_ANON_NAME.
Dacă câmpul nume-rută este gol, aceasta este o cartografiere anonimă obținută prin mmap(2). Nu există o modalitate ușoară de a corela aceasta cu sursa unui proces, cu excepția rulării acesteia prin gdb(1), strace(1) sau similar.
pathname este afișat neeludat, cu excepția caracterelor de linie nouă, care sunt înlocuite cu o secvență de eludare octală. Ca urmare, nu este posibil să se determine dacă numele de rută original conținea un caracter de linie nouă sau secvența literală de caractere \012.
Dacă cartografierea este stocată în fișier și fișierul a fost șters, șirul „(deleted)” este adăugat la numele rutei. Rețineți că acest lucru este, de asemenea, ambiguu.
Sub Linux 2.0, nu există niciun câmp care să indice numele rutei.
/proc/pid/mem
Acest fișier poate fi utilizat pentru a accesa paginile din memoria unui proces prin open(2), read(2) și lseek(2).
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_ATTACH_FSCREDS; a se vedea ptrace(2).
/proc/pid/mountinfo (începând cu Linux 2.6.26)
Acest fișier conține informații despre montările din spațiul de nume de montare al procesului (a se vedea mount_namespaces(7)). Acesta furnizează diverse informații (de exemplu, starea de propagare, rădăcina montării pentru montările bind, identificatorul fiecărei montări și al părintelui acesteia) care lipsesc din fișierul (mai vechi) /proc/pid/mounts și rezolvă diverse alte probleme ale fișierului respectiv (de exemplu, lipsa extensibilității, imposibilitatea de a distinge opțiunile „per-montare” de cele „per-superbloc”).
Fișierul conține linii de forma:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)
    
Numerele din paranteze sunt etichete pentru descrierile de mai jos:
(1)
ID montare: un ID unic pentru montare (poate fi reutilizat după umount(2)).
(2)
ID părinte: ID-ul montării părinte (sau al propriei montări pentru rădăcina arborelui de montări al acestui spațiu de nume de montare).
Dacă o montare nouă este stivuită deasupra unei montări anterioare existente (astfel încât să ascundă montarea existentă) la numele de rută P, atunci părintele noii montări este montarea anterioară din acea locație. Astfel, atunci când ne uităm la toate montările stivuite la o anumită locație, cea mai înaltă montare este cea care nu este părintele niciunei alte montări la aceeași locație. Rețineți, totuși, că această montare cea mai de sus va fi accesibilă numai dacă cel mai lung subprefix de rută al lui P care este un punct de montare nu este el însuși ascuns de o montare stivuită.
Dacă montarea părinte se află în afara directorului rădăcină al procesului (a se vedea chroot(2)), ID-ul afișat aici nu va avea o înregistrare corespunzătoare în mountinfo al cărei ID de montare (câmpul 1) să corespundă acestui ID de montare părinte (deoarece montările care se află în afara directorului rădăcină al procesului nu sunt afișate în mountinfo). Ca un caz special al acestui punct, suportul rădăcină al procesului poate avea un suport părinte (pentru sistemul de fișiere initramfs) care se află în afara directorului rădăcină al procesului, iar o intrare pentru acel suport nu va apărea în mountinfo.
(3)
major:minor: valoarea st_dev pentru fișierele din acest sistem de fișiere (a se vedea stat(2)).
(4)
rădăcina: numele directorului din sistemul de fișiere care formează rădăcina acestei montări.
(5)
punct de montare: numele de rută al punctului de montare raportat la directorul rădăcină al procesului.
(6)
opțiuni de montare: opțiuni per- montare (a se vedea mount(2)).
(7)
câmpuri opționale: zero sau mai multe câmpuri de forma „etichetă[:valoare]”; a se vedea mai jos.
(8)
separator: sfârșitul câmpurilor opționale este marcat de o singură cratimă („-”).
(9)
tipul sistemului de fișiere: tipul sistemului de fișiere sub forma „tip[.subtip]”.
(10)
sursa montării: informații specifice sistemului de fișiere sau niciuna „none”.
(11)
opțiuni super-bloc: opțiuni per-superbloc (a se vedea mount(2)).
În prezent, câmpurile opționale posibile sunt shared, master, propagate_from și unbindable. Consultați mount_namespaces(7) pentru o descriere a acestor câmpuri. Analizatorii trebuie să ignore toate câmpurile opționale nerecunoscute.
Pentru mai multe informații despre propagarea montării, consultați Documentation/filesystems/sharedsubtree.rst (sau Documentation/filesystems/sharedsubtree.txt înainte de Linux 5.8) în arborele sursă al nucleului Linux.
/proc/pid/mounts (începând cu Linux 2.4.19)
Acest fișier enumeră toate sistemele de fișiere montate în prezent în spațiul de nume de montare al procesului (a se vedea mount_namespaces(7)). Formatul acestui fișier este documentat în fstab(5).
Începând cu Linux 2.6.15, acest fișier poate fi interogat: după deschiderea fișierului pentru citire, o modificare a acestui fișier (adică, montarea sau demontarea sistemului de fișiere) face ca select(2) să marcheze descriptorul fișierului ca având o condiție excepțională și poll(2) și epoll_wait(2) marchează fișierul ca având un eveniment prioritar (POLLPRI). Înainte de Linux 2.6.30, o modificare a acestui fișier era indicată de descriptorul de fișier fiind marcat cu permisiune de citire pentru select(2) și fiind marcat ca având o condiție de eroare pentru poll(2) și epoll_wait(2).
/proc/pid/mountstats (începând cu Linux 2.6.17)
Acest fișier exportă informații (statistici, informații de configurare) despre montările din spațiul de nume mount al procesului (a se vedea mount_namespaces(7)). Liniile din acest fișier au forma:

device /dev/sda7 mounted on /home with fstype ext3 [stats]
(       1      )            ( 2 )             (3 ) (  4  )
    

Câmpurile din fiecare linie sunt:
(1)
Numele dispozitivului montat (sau „nodevice” dacă nu există un dispozitiv corespunzător).
(2)
Punctul de montare din arborele sistemului de fișiere.
(3)
Tipul sistemului de fișiere.
(4)
Statistici opționale și informații de configurare. În prezent (la Linux 2.6.26), numai sistemele de fișiere NFS exportă informații prin intermediul acestui câmp.
Acest fișier poate fi citit numai de către proprietarul procesului.
/proc/pid/net/ (începând cu Linux 2.6.25)
A se vedea descrierea /proc/net.
/proc/pid/ns/ (începând cu Linux 3.0)
Acesta este un subdirectoriu care conține o intrare pentru fiecare spațiu de nume care acceptă să fie manipulat de setns(2). Pentru mai multe informații, consultați namespaces(7).
/proc/pid/numa_maps (începând cu Linux 2.6.14)
A se vedea numa(7).
/proc/pid/oom_adj (începând cu Linux 2.6.11)
Acest fișier poate fi utilizat pentru a ajusta punctajul utilizat pentru a selecta procesul care ar trebui omorât într-o situație OOM (out-of-memory). Nucleul utilizează această valoare pentru o operație de bit-shift a valorii oom_score a procesului: valorile valide sunt cuprinse între -16 și +15, plus valoarea specială -17, care dezactivează complet omorârea OOM pentru acest proces. Un punctaj pozitiv crește probabilitatea ca acest proces să fie omorât de OOM-killer; un punctaj negativ scade probabilitatea.
Valoarea implicită pentru acest fișier este 0; un proces nou moștenește valoarea oom_adj a părintelui său. Un proces trebuie să fie privilegiat (CAP_SYS_RESOURCE) pentru a actualiza acest fișier.
Începând cu Linux 2.6.36, utilizarea acestui fișier este depreciată în favoarea /proc/pid/oom_score_adj.
/proc/pid/oom_score (începând cu Linux 2.6.11)
Acest fișier afișează punctajul curent pe care nucleul îl acordă acestui proces în scopul selectării unui proces pentru OOM-killer. Un scor mai mare înseamnă că este mai probabil ca procesul să fie selectat de OOM-killer. La baza acestui punctaj stă cantitatea de memorie utilizată de proces, cu creșteri (+) sau scăderi (-) pentru factori care includ:
dacă procesul este privilegiat (-).
Înainte de Linux 2.6.36, în calculul oom_score erau utilizați și următorii factori:
dacă procesul creează o mulțime de procese-copil folosind fork(2) (+);
dacă procesul rulează de mult timp sau dacă a utilizat mult timp CPU (-);
dacă procesul are o valoare de curtoazie „nice” scăzută (de exemplu, > 0) (+); și
dacă procesul face acces direct la hardware (-).
oom_score reflectă, de asemenea, ajustarea specificată de valoarea oom_score_adj sau oom_adj pentru proces.
/proc/pid/oom_score_adj (începând cu Linux 2.6.36)
Acest fișier poate fi utilizat pentru a ajusta euristica de comportament inadecvat „badness” utilizată pentru a selecta care proces este ucis în condiții de lipsă de memorie.
Metoda euristică a comportamentului inadecvat atribuie o valoare fiecărei sarcini candidate, cuprinsă între 0 (nu omoară niciodată) și 1000 (omoară întotdeauna), pentru a determina care proces este vizat. Unitățile reprezintă aproximativ o proporție de-a lungul intervalului de memorie permisă pe care procesul o poate aloca, pe baza unei estimări a utilizării curente a memoriei și a spațiului memoriei de interschimb. De exemplu, dacă o sarcină utilizează toată memoria permisă, punctajul său de comportament inadecvat va fi 1000. Dacă utilizează jumătate din memoria permisă, punctajul său va fi de 500.
Există un factor suplimentar inclus în punctajul de răutate: procesele utilizatorului root primesc 3% de memorie în plus față de alte sarcini.
Cantitatea de memorie„permisă” depinde de contextul în care a fost apelat OOM-killer. Dacă se datorează epuizării memoriei alocate cpuset-ului sarcinii de alocare, memoria permisă reprezintă setul de memorii alocate cpuset-ului respectiv (a se vedea cpuset(7)). Dacă se datorează epuizării nodului (nodurilor) unei „mempolicy”, memoria permisă reprezintă setul de noduri „mempolicy”. Dacă se datorează atingerii unei limite de memorie (sau a unei limite a spațiului memoriei de interschimb), memoria permisă este limita configurată. În cele din urmă, dacă se datorează faptului că întregul sistem a rămas fără memorie, memoria permisă reprezintă toate resursele alocabile.
Valoarea oom_score_adj este adăugată la punctajul de comportament inadecvat înainte de a fi utilizată pentru a determina sarcina care trebuie eliminată. Valorile acceptabile variază de la -1000 (OOM_SCORE_ADJ_MIN) la +1000 (OOM_SCORE_ADJ_MAX). Acest lucru permite spațiului utilizatorului să controleze preferința pentru OOM-killing, variind de la a prefera întotdeauna o anumită sarcină sau a o dezactiva complet de la OOM-killing. Cea mai mică valoare posibilă, -1000, este echivalentă cu dezactivarea completă a OOM-killing pentru sarcina respectivă, deoarece aceasta va raporta întotdeauna un punctaj de comportament inadecvat de 0.
În consecință, este foarte simplu pentru spațiul de utilizator să definească cantitatea de memorie care trebuie luată în considerare pentru fiecare sarcină. Stabilirea unei valori oom_score_adj de +500, de exemplu, este aproximativ echivalentă cu a permite celorlalte sarcini care împart același sistem, „cpuset”, „mempolicy” sau resurse ale controlorului de memorie să utilizeze cu cel puțin 50% mai multă memorie. O valoare de -500, pe de altă parte, ar fi aproximativ echivalentă cu reducerea cu 50% a memoriei permise pentru sarcină pentru a nu fi considerată ca fiind în defavoarea sarcinii.
Pentru compatibilitatea cu nucleele anterioare, /proc/pid/oom_adj poate fi utilizat în continuare pentru a regla punctajul de comportament inadecvat. Valoarea sa este scalată liniar cu oom_score_adj.
Scrierea în /proc/pid/oom_score_adj sau /proc/pid/oom_adj îl va modifica pe celălalt cu valoarea sa scalată.
Programul choom(1) oferă o interfață de linie de comandă pentru ajustarea valorii oom_score_adj a unui proces în desfășurare sau a unei comenzi nou executate.
/proc/pid/pagemap (începând cu Linux 2.6.25)
Acest fișier arată cartografierea fiecărei pagini virtuale a procesului în cadre de pagini fizice sau în spațiul de interschimb (swap). Acesta conține o valoare pe 64 de biți pentru fiecare pagină virtuală, cu biții stabiliți după cum urmează:
63
Dacă este definit, pagina este prezentă în RAM.
62
Dacă este definit, pagina este în spațiul de interschimb.
61 (începând cu Linux 3.5)
Pagina este o pagină cu fișier cartografiat sau o pagină anonimă partajată.
60–58 (începând cu Linux 3.11)
Zero
57 (începând cu Linux 5.14)
Dacă este definit, pagina este protejată împotriva scrierii prin userfaultfd(2).
56 (începând cu Linux 4.2)
Pagina este cartografiată exclusiv.
55 (începând cu Linux 3.11)
PTE este soft-dirty (a se vedea fișierul sursă al nucleului Documentation/admin-guide/mm/soft-dirty.rst).
54–0
Dacă pagina este prezentă în RAM (bit 63), atunci acești biți furnizează numărul cadrului paginii, care poate fi utilizat pentru indexarea /proc/kpageflags și /proc/kpagecount. Dacă pagina este prezentă în spațiul de interschimb (bit 62), atunci biții 4–0 dau tipul spațiului de interschimb, iar biții 54–5 codifică decalajul spațiului de interschimb.
Înainte de Linux 3.11, biții 60–55 au fost utilizați pentru a codifica log baza-2 a dimensiunii paginii.
Pentru a utiliza /proc/pid/pagemap în mod eficient, utilizați /proc/pid/maps pentru a determina care zone ale memoriei sunt efectiv cartografiate și căutați să săriți peste regiunile fără cartografiere.
Fișierul /proc/pid/pagemap este prezent numai dacă opțiunea de configurare a nucleului CONFIG_PROC_PAGE_MONITOR este activată.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/personality (începând cu Linux 2.6.28)
Acest fișier numai-pentru-citire expune domeniul de execuție al procesului, astfel cum este stabilit de personality(2). Valoarea este afișată în notație hexazecimală.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_ATTACH_FSCREDS; a se vedea ptrace(2).
/proc/pid/root
UNIX și Linux susțin ideea unei rădăcini a sistemului de fișiere pentru fiecare proces, stabilită prin apelul de sistem chroot(2). Acest fișier este o legătură simbolică care indică directorul rădăcină al procesului și se comportă în același mod ca exe și fd/*.
Rețineți totuși că acest fișier nu este doar o legătură simbolică. Acesta oferă aceeași vizualizare a sistemului de fișiere (inclusiv a spațiilor de nume și a setului de montări per-proces) ca și procesul în sine. Un exemplu ilustrează acest aspect. Într-un terminal, pornim un shell în spații de nume de utilizator și de montare noi, iar în acel shell creăm câteva montări noi:

$ PS1='sh1# ' unshare -Urnm
sh1# mount -t tmpfs tmpfs /etc  # Montează tmpfs gol la /etc
sh1# mount --bind /usr /dev     # Montează/usr la /dev
sh1# echo $$
27123
    

Într-o a doua fereastră de terminal, în spațiul de nume de montare inițial, ne uităm la conținutul montărilor corespunzătoare din spațiul de nume inițial și cel nou:

$ PS1='sh2# ' sudo sh
sh2# ls /etc | wc -l                  # În spațiul-de-nume inițial
309
sh2# ls /proc/27123/root/etc | wc -l  # /etc în alt spațiu-de-nume
0                                     # Directorul tmpfs gol
sh2# ls /dev | wc -l                  # În spațiul-de-nume inițial
205
sh2# ls /proc/27123/root/dev | wc -l  # /dev în alt spațiu-de-nume
11                                    # De fapt montat

# bind la /usr sh2# ls /usr | wc -l # /usr în spațiul-de-nume inițial 11

Într-un proces cu mai multe fire de execuție, conținutul legăturii simbolice /proc/pid/root nu este disponibil dacă firul principal s-a terminat deja (de obicei prin apelarea pthread_exit(3)).
Permisiunea de a dereferenția sau citi (readlink(2)) această legătură simbolică este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/pid/projid_map (începând cu Linux 3.7)
A se vedea user_namespaces(7).
/proc/pid/seccomp (de la Linux 2.6.12 la Linux 2.6.22)
Acest fișier poate fi utilizat pentru a citi și a modifica configurarea modului de calcul securizat (seccomp) al procesului. Acesta conține valoarea 0 dacă procesul nu se află în modul seccomp și valoarea 1 dacă procesul se află în modul seccomp strict [a se vedea seccomp(2)]. Scrierea valorii 1 în acest fișier plasează procesul în mod seccomp strict în mod ireversibil; (încercările ulterioare de a scrie în acest fișier eșuează cu eroarea EPERM).
În Linux 2.6.23, acest fișier a dispărut, fiind înlocuit de operațiile prctl(2) PR_GET_SECCOMP și PR_SET_SECCOMP (și ulterior de seccomp(2) și câmpul Seccomp din /proc/pid/status).
/proc/pid/setgroups (începând cu Linux 3.19)
A se vedea user_namespaces(7).
/proc/pid/smaps (începând cu Linux 2.6.14)
Acest fișier arată consumul de memorie pentru fiecare dintre hărțile procesului. (Comanda pmap(1) afișează informații similare, într-o formă care poate fi mai ușor de analizat). Pentru fiecare cartografiere există o serie de linii, cum ar fi următoarele:

00400000-0048a000 r-xp 00000000 fd:03 960637       /bin/bash
Size:                552 kB
Rss:                 460 kB
Pss:                 100 kB
Shared_Clean:        452 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:          460 kB
Anonymous:             0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB
ProtectionKey:         0
VmFlags: rd ex mr mw me dw
    

Prima dintre aceste linii prezintă aceleași informații ca cele afișate pentru cartografierea din /proc/pid/maps. Următoarele linii indică dimensiunea hărții, cantitatea de hărți care este în prezent rezidentă în RAM („Rss”), partea proporțională a procesului din această hărți („Pss”), numărul de pagini partajate curate și murdare din hărți și numărul de pagini private curate și murdare din hărți. „Referenced” indică cantitatea de memorie marcată în prezent ca fiind referită sau accesată. „Anonymous” arată cantitatea de memorie care nu aparține niciunui fișier. „Swap” arată cât de multă memorie care ar putea fi anonimă este, de asemenea, utilizată, dar în spațiul de memorie de interschimb (swap).
Linia „KernelPageSize” (disponibilă începând cu Linux 2.6.29) este dimensiunea paginii utilizate de nucleu pentru a susține zona de memorie virtuală. Aceasta corespunde dimensiunii utilizate de MMU în majoritatea cazurilor. Cu toate acestea, un contra-exemplu apare pe nucleele PPC64, unde un nucleu care utilizează 64 kB ca dimensiune de pagină de bază poate utiliza în continuare pagini de 4 ko pentru MMU pe procesoarele mai vechi. Pentru a distinge cele două atribute, linia „MMUPageSize” (de asemeni disponibilă începând cu Linux 2.6.29) raportează dimensiunea paginii utilizate de MMU.
„Locked” indică dacă cartografierea este blocată în memorie sau nu.
Linia „ProtectionKey” (disponibilă începând cu Linux 4.9, numai pe x86) conține cheia de protecție a memoriei (a se vedea pkeys(7)) asociată cu zona de memorie virtuală. Această intrare este prezentă numai dacă nucleul a fost construit cu opțiunea de configurare CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS activată (începând cu Linux 4.6).
Linia „VmFlags” (disponibilă începând cu Linux 3.8) reprezintă fanioanele nucleului asociate cu zona de memorie virtuală, codificate utilizând următoarele coduri din două litere:
rd - se poate citi
wr - se poate scrie
ex - executabil
sh - partajat
mr - poate citi
mw - poate scrie
me - poate executa
ms - poate partaja
gd - segmentul de stivă crește în jos
pf - interval PFN pur
dw - scriere dezactivată în fișierul cartografiat
lo - paginile sunt blocate în memorie
io - zonă de In/Ieș cartografiată în memorie
sr - avertizare de citire secvențială furnizată
rr - avertizare de citire aleatorie furnizată
dc - nu copiază zona la bifurcare
de - nu extinde zona la recartografiere
ac - zona este responsabilă
nr - spațiul de interschimb (swap) nu este rezervat pentru zonă
ht - zona utilizează pagini tlb imense
sf - efectuează sincronizări de „page faults” (începând cu Linux 4.15)
nl - cartografiere neliniară (eliminată în Linux 4.0)
ar - fanion specific arhitecturii
wf - șterge la bifurcare (începând cu Linux 4.14)
dd - nu include zona în descărcarea datelor din memorie
sd - fanion soft-dirty (începând cu Linux 3.13)
mm - zonă de hartă mixtă
hg - fanion de avertizare de pagină imensă
nh - fanion de avertizare de pagină ne-imensă
mg - fanion de avertizare de fuzionare
um - urmărire a paginilor lipsă userfaultfd (începând cu Linux 4.3)
uw - urmărire a paginilor wprotect userfaultfd (începând cu Linux 4.3)
Fișierul /proc/pid/smaps este prezent numai dacă opțiunea de configurare a nucleului CONFIG_PROC_PAGE_MONITOR este activată.
/proc/pid/stack (începând cu Linux 2.6.29)
Acest fișier oferă o urmă simbolică a apelurilor de funcții din stiva de nucleu a acestui proces. Acest fișier este furnizat numai dacă nucleul a fost construit cu opțiunea de configurare CONFIG_STACKTRACE activată.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_ATTACH_FSCREDS; a se vedea ptrace(2).
/proc/pid/stat
Informații privind starea procesului. Acestea sunt utilizate de ps(1). Este definit în fișierul sursă al nucleului fs/proc/array.c.
Câmpurile, în ordine, cu specificatorii de format scanf(3) corespunzători, sunt enumerate mai jos. Verificarea modului de acces ptrace PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT (a se vedea ptrace(2)) determină dacă unele dintre aceste câmpuri afișează sau nu informații valide. Dacă verificarea refuză accesul, atunci valoarea câmpului este afișată ca 0. Câmpurile afectate sunt indicate cu marcajul [PT].
(1) pid  %d

ID-ul procesului.
(2) comm  %s
Numele de fișier al executabilului, în paranteze. Șirurile mai lungi de TASK_COMM_LEN (16) caractere (inclusiv octetul nul de încheiere) sunt trunchiate în mod silențios. Acest lucru este vizibil indiferent dacă executabilul a fost descărcat în spațiul de interschimb (swap) sau nu.
(3) state  %c
Unul dintre următoarele caractere, care indică starea procesului:
În execuție
Adormirea într-o așteptare întreruptibilă
Așteptare în modul de repaus neîntreruptibil al discului
Zombi
Oprire (la un semnal) sau (înainte de Linux 2.6.33) urmărire oprită
Oprirea urmăririi (începând cu Linux 2.6.33)
Paginare (numai înainte de Linux 2.6.0)
Mort (de la Linux 2.6.0 încoace)
Mort (numai de la Linux 2.6.33 la Linux 3.13)
Wakekill (numai pentru Linux 2.6.33 până la 3.13)
Waking (numai pentru Linux 2.6.33 până la 3.13)
Parked (numai pentru Linux 3.9 până la 3.13)
Idle (începând cu Linux 4.14)
(4) ppid  %d
PID-ul părintelui acestui proces.
(5) pgrp  %d
ID-ul grupului de procese al procesului.
(6) session  %d
ID-ul de sesiune al procesului.
(7) tty_nr  %d
Terminalul de control al procesului; (numărul dispozitivului minor este conținut în combinația de biți 31-20 și 7-0; numărul dispozitivului major este conținut în biții 15-8).
(8) tpgid  %d
ID-ul grupului de procese din prim-plan al terminalului de control al procesului.
(9) fanioane  %u
Cuvântul conținut de fanioanele nucleului pentru procese. Pentru semnificația biților, consultați definițiile PF_* din fișierul sursă al nucleului Linux include/linux/sched.h. Detaliile depind de versiunea nucleului.
Formatul pentru acest câmp era %lu înainte de Linux 2.6.
(10) minflt  %lu
Numărul de erori minore pe care le-a făcut procesul și care nu au necesitat încărcarea unei pagini de memorie de pe disc.
(11) cminflt  %lu
Numărul de defecte minore pe care le-au făcut copiii așteptați ai procesului.
(12) majflt  %lu
Numărul de erori majore ale procesului care au necesitat încărcarea unei pagini de memorie de pe disc.
(13) cmajflt  %lu
Numărul de greșeli majore pe care le-au făcut copiii așteptați ai procesului.
(14) utime  %lu
Cantitatea de timp în care acest proces a fost planificat în modul utilizator, măsurată în ticuri de ceas (împărțită la sysconf(_SC_CLK_TCK)). Acest lucru include timpul de invitat, guest_time (timpul petrecut rulând un CPU virtual, a se vedea mai jos), astfel încât aplicațiile care nu sunt conștiente de câmpul de timp de invitat să nu piardă acest timp din calculele lor.
(15) stime  %lu
Cantitatea de timp în care acest proces a fost planificat în modul nucleu, măsurată în ticuri de ceas (împărțită la sysconf(_SC_CLK_TCK)).
(16) cutime  %ld
Cantitatea de timp în care copiii așteptați ai acestui proces au fost planificați în modul utilizator, măsurată în ticuri de ceas (împărțită la sysconf(_SC_CLK_TCK)); (a se vedea și times(2)). Acest lucru include timpul de invitat, cguest_time (timpul petrecut rulând un CPU virtual, a se vedea mai jos).
(17) cstime  %ld
Cantitatea de timp în care copiii așteptați ai acestui proces au fost planificați în modul nucleu, măsurată în ticuri de ceas (împărțită la sysconf(_SC_CLK_TCK)).
(18) priority  %ld
(Explicație pentru Linux 2.6) Pentru procesele care rulează o politică de planificare în timp real (policy de mai jos; a se vedea sched_setscheduler(2)), aceasta este prioritatea de planificare negată, minus unu; adică un număr cuprins între -2 și -100, corespunzând priorităților în timp real de la 1 la 99. Pentru procesele care rulează în cadrul unei politici de planificare fără timp real, aceasta este valoarea „nice” brută (setpriority(2)) așa cum este reprezentată în nucleu. Nucleul stochează valorile „nice” ca numere în intervalul de la 0 (mare) la 39 (mic), corespunzător intervalului „nice” vizibil pentru utilizator de la -20 la 19.
Înainte de Linux 2.6, aceasta era o valoare scalată pe baza ponderii acordate acestui proces de către planificator.
(19) nice  %ld
Valoarea „nice” (a se vedea setpriority(2)), o valoare în intervalul 19 (prioritate scăzută) - -20 (prioritate ridicată).
(20) num_threads  %ld
Numărul de fire din acest proces ( începând cu Linux 2.6). Înainte de Linux 2.6, acest câmp a fost codat la 0 ca un loc pentru un câmp eliminat anterior.
(21) itrealvalue  %ld
Timpul în „jiffies” (clipite) înainte ca următorul SIGALRM să fie trimis către proces datorită unui temporizator de interval. Începând cu Linux 2.6.17, acest câmp nu mai este menținut și este codat dur ca 0.
(22) starttime  %llu
Timpul la care a început procesul după pornirea sistemului. Înainte de Linux 2.6, această valoare era exprimată în „jiffies”. Începând cu Linux 2.6, valoarea este exprimată în ticuri de ceas (împărțite la sysconf(_SC_CLK_TCK)).
Formatul pentru acest câmp era %lu înainte de Linux 2.6.
(23) vsize  %lu
Dimensiunea memoriei virtuale în octeți.
(24) rss  %ld
Dimensiunea setului rezident („Resident Set Size”: RSS): numărul de pagini pe care procesul le are în memoria reală. Acestea sunt doar paginile care contează pentru spațiul de text, date sau stivă. Aceasta nu include paginile care nu au fost încărcate la cerere sau care sunt stocate în spațiul de interschimb (swap). Această valoare este inexactă; a se vedea /proc/pid/statm mai jos.
(25) rsslim  %lu
Limita software curentă în octeți pe rss a procesului; a se vedea descrierea lui RLIMIT_RSS în getrlimit(2).
(26) startcode  %lu  [PT]
Adresa deasupra căreia poate rula textul programului.
(27) endcode  %lu  [PT]
Adresa sub care poate rula textul programului.
(28) startstack  %lu  [PT]
Adresa de început (adică de jos) a stivei.
(29) kstkesp  %lu  [PT]
Valoarea curentă a ESP (indicatorul de stivă), așa cum se găsește în pagina de stivă a nucleului pentru proces.
(30) kstkeip  %lu  [PT]
EIP-ul (indicatorul de instrucțiuni) curent.
(31) signal  %lu
Harta de biți a semnalelor în așteptare, afișată ca număr zecimal. Obsoletă, deoarece nu furnizează informații privind semnalele în timp real; utilizați în schimb /proc/pid/status.
(32) blocked  %lu
Harta de biți a semnalelor blocate, afișată ca număr zecimal. Obsoletă, deoarece nu furnizează informații privind semnalele în timp real; utilizați în schimb /proc/pid/status.
(33) sigignore  %lu
Harta de biți a semnalelor ignorate, afișată ca număr zecimal. Obsoletă, deoarece nu furnizează informații privind semnalele în timp real; utilizați în schimb /proc/pid/status.
(34) sigcatch  %lu
Harta de biți a semnalelor capturate, afișată ca un număr zecimal. Obsoletă, deoarece nu furnizează informații privind semnalele în timp real; utilizați în schimb /proc/pid/status.
(35) wchan  %lu  [PT]
Acesta este „canalul” în care procesul așteaptă. Este adresa unei locații din nucleu în care procesul doarme. Numele simbolic corespunzător poate fi găsit în /proc/pid/wchan.
(36) nswap  %lu
Numărul de pagini transferate în spațiul de interschimb (nu este întreținut).
(37) cnswap  %lu
nswap cumulativ pentru procesele-copil (nu este menținut).
(38) exit_signal  %d  (începând cu Linux 2.1.22)
Semnal care trebuie trimis părinților atunci când murim :).
(39) processor  %d  (începând cu Linux 2.2.8)
Numărul CPU-ului pe care s-a executat ultima dată.
(40) rt_priority  %u  (începând cu Linux 2.5.19)
Prioritatea planificării în timp real, un număr cuprins între 1 și 99 pentru procesele planificate în conformitate cu o politică în timp real sau 0, pentru procesele în afara timpului real (a se vedea sched_setscheduler(2)).
(41) policy  %u  (începând cu Linux 2.5.19)
Politica de planificare (a se vedea sched_setscheduler(2)). Decodare utilizând constantele SCHED_* din linux/sched.h.
Formatul pentru acest câmp era %lu înainte de Linux 2.6.22.
(42) delayacct_blkio_ticks  %llu  (începând cu Linux 2.6.18)
Întârzieri de In/Ieș agregate blocului, măsurate în ticuri de ceas (sutimi de secundă).
(43) guest_time  %lu  (începând cu Linux 2.6.24)
Timpul procesului în calitate de invitat (timpul petrecut executând un CPU virtual pentru un sistem de operare invitat), măsurat în ticuri de ceas (împărțit la sysconf(_SC_CLK_TCK)).
(44) cguest_time  %ld  (începând cu Linux 2.6.24)
Timpul ca invitat al copiilor procesului, măsurat în ticuri de ceas (împărțit la sysconf(_SC_CLK_TCK)).
(45) start_data  %lu  (începând cu Linux 3.3)  [PT]
Adresa deasupra căreia sunt plasate datele inițializate și neinițializate (BSS) ale programului.
(46) end_data  %lu  (începând cu Linux 3.3)  [PT]
Adresa sub care sunt plasate datele inițializate și neinițializate (BSS) ale programului.
(47) start_brk  %lu  (începând cu Linux 3.3)  [PT]
Adresa peste care se poate extinde grămada „heap” programului cu brk(2).
(48) arg_start  %lu  (începând cu Linux 3.5)  [PT]
Adresa deasupra căreia sunt plasate argumentele din linia de comandă a programului (argv).
(49) arg_end  %lu  (începând cu Linux 3.5)  [PT]
Adresa sub care sunt plasate argumentele din linia de comandă a programului (argv).
(50) env_start  %lu  (începând cu Linux 3.5)  [PT]
Adresa deasupra căreia este plasat mediul programului.
(51) env_end  %lu  (începând cu Linux 3.5)  [PT]
Adresa sub care este plasat mediul programului.
(52) exit_code  %d  (începând cu Linux 3.5)  [PT]
Starea de ieșire a firului în forma raportată de waitpid(2).
/proc/pid/statm
Oferă informații despre utilizarea memoriei, măsurată în pagini. Coloanele sunt:

size (1) dimensiunea totală a programului

(la fel ca VmSize în /proc/pid/status) resident (2) dimensiunea setului de rezidenți
(inexactă; la fel ca VmRSS în /proc/pid/status) shared (3) numărul de pagini partajate rezidente
(adică, copiate într-un fișier)
(inexactă; identic cu RssFile+RssShmem în
/proc/pid/status) text (4) text (cod) lib (5) bibliotecă (neutilizată de la Linux 2.6; întotdeauna 0) data (6) date + stivă dt (7) nr. de pagini murdare (neutilizată de la Linux 2.6; întotdeauna 0)

Unele dintre aceste valori sunt inexacte din cauza unei optimizări interne a scalabilității nucleului. Dacă sunt necesare valori exacte, utilizați în schimb /proc/pid/smaps sau /proc/pid/smaps_rollup, care sunt mult mai lente, dar furnizează informații exacte și detaliate.
/proc/pid/status
Furnizează multe dintre informațiile din /proc/pid/stat și /proc/pid/statm într-un format mai ușor de analizat de către oameni. Iată un exemplu:

$ cat /proc/$$/status
Name:   bash
Umask:  0022
State:  S (sleeping)
Tgid:   17248
Ngid:   0
Pid:    17248
PPid:   17200
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    100     100     100     100
FDSize: 256
Groups: 16 33 100
NStgid: 17248
NSpid:  17248
NSpgid: 17248
NSsid:  17200
VmPeak:	  131168 kB
VmSize:	  131168 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	   13484 kB
VmRSS:	   13484 kB
RssAnon:	   10264 kB
RssFile:	    3220 kB
RssShmem:	       0 kB
VmData:	   10332 kB
VmStk:	     136 kB
VmExe:	     992 kB
VmLib:	    2104 kB
VmPTE:	      76 kB
VmPMD:	      12 kB
VmSwap:	       0 kB
HugetlbPages:          0 kB		# 4.4
CoreDumping:	0                       # 4.15
Threads:        1
SigQ:   0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
CapAmb:	0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   00000001
Cpus_allowed_list:      0
Mems_allowed:   1
Mems_allowed_list:      0
voluntary_ctxt_switches:        150
nonvoluntary_ctxt_switches:     545
    

Câmpurile sunt următoarele:
Comanda executată de acest proces. Șirurile de caractere mai lungi de TASK_COMM_LEN (16) caractere (inclusiv octetul nul de terminare) sunt trunchiate silențios.
Procesul umask, exprimat în octal cu un zero în față; a se vedea umask(2); (începând cu Linux 4.7).
Starea actuală a procesului. Una dintre „R (running)”, „S (sleeping)”, „D (disk sleep)”, „T (stopped)”, „t (tracing stop)”, „Z (zombie)” sau „X (dead)”.
ID-ul grupului de fire (adică ID-ul procesului).
ID-ul grupului NUMA (0 dacă nu există; începând cu Linux 3.13).
ID-ul firului (a se vedea gettid(2)).
PID-ul procesului părinte.
PID al procesului care urmărește acest proces (0 dacă nu este urmărit).
UID-uri (GID-uri) reale, efective, ale setului salvat și ale sistemului de fișiere.
Numărul de sloturi de descriptor de fișier alocate în prezent.
Lista suplimentară a grupurilor.
ID-ul grupului de fire (adică PID) în fiecare dintre spațiile de nume PID din care face parte pid. Cea mai din stânga intrare arată valoarea în ceea ce privește spațiul de nume PID al procesului care a montat acest procfs (sau spațiul de nume rădăcină dacă este montat de nucleu), urmată de valoarea în spațiile de nume interioare imbricate succesiv; (începând cu Linux 4.1).
ID-ul firului în fiecare dintre spațiile de nume PID din care face parte pid. Câmpurile sunt ordonate ca pentru NStgid; (începând cu Linux 4.1.)
ID-ul grupului de procese în fiecare dintre spațiile de nume PID din care face parte pid. Câmpurile sunt ordonate ca pentru NStgid; (începând cu Linux 4.1.)
ID-ul de sesiune al ierarhiei ID-urilor de sesiune ale spațiilor de nume descendente în fiecare dintre spațiile de nume PID din care face parte pid. Câmpurile sunt ordonate ca pentru NStgid; (începând cu Linux 4.1).
Dimensiunea de vârf a memoriei virtuale.
Dimensiunea memoriei virtuale.
Dimensiunea memoriei blocate (a se vedea mlock(2)).
Dimensiunea memoriei fixate (începând cu Linux 3.2). Acestea sunt pagini care nu pot fi mutate deoarece ceva trebuie să acceseze direct memoria fizică.
Dimensiunea de vârf a setului rezident („high water mark”). Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea setului de rezident. Rețineți că valoarea de aici este suma dintre RssAnon, RssFile și RssShmem. Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea memoriei anonime rezidente; (începând cu Linux 4.5). Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea cartografierii fișierelor rezidente; (începând cu Linux 4.5). Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea memoriei partajate rezidente (include memoria partajată System V, cartografierile din tmpfs(5) și cartografierile anonime partajate); (începând cu Linux 4.5).
Dimensiunea segmentelor de date, stivă și text. Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea codului bibliotecii partajate.
Dimensiunea intrărilor din tabelul de pagini (începând cu Linux 2.6.10).
Dimensiunea tabelelor de pagini de al doilea nivel (adăugată în Linux 4.0; eliminată în Linux 4.15).
Dimensiunea memoriei virtuale a spațiului de memorie interschimbat prin pagini private anonime; utilizarea „swap shmem” nu este inclusă (începând cu Linux 2.6.34). Această valoare este inexactă; a se vedea /proc/pid/statm de mai sus.
Dimensiunea porțiunilor de memorie hugetlb (începând cu Linux 4.4).
Conține valoarea 1 dacă procesul descarcă în prezent memoria și 0 dacă nu (începând cu Linux 4.15). Această informație poate fi utilizată de un proces de monitorizare pentru a evita omorârea unui proces care descarcă în prezent memoria, ceea ce ar putea duce la un fișier de descărcare de memorie corupt.
Numărul de fire în proces care conțin acest fir.
Acest câmp conține două numere separate prin bară oblică care se referă la semnalele aflate în coada de așteptare pentru ID-ul utilizatorului real al acestui proces. Primul dintre acestea este numărul de semnale aflate în prezent în coada de așteptare pentru acest ID de utilizator real, iar al doilea este limita resurselor privind numărul de semnale aflate în coada de așteptare pentru acest proces (a se vedea descrierea RLIMIT_SIGPENDING în getrlimit(2)).
Masca (exprimată în hexazecimal) a semnalelor în așteptare pentru firul de execuție și pentru proces ca întreg (a se vedea pthreads(7) și signal(7)).
Măști (exprimate în hexazecimal) care indică semnalele blocate, ignorate și capturate (a se vedea signal(7)).
Măști (exprimate în hexazecimal) ale capacităților activate în seturi moștenite, permise și efective (a se vedea capabilities(7)).
Setul de delimitare a capacităților, exprimat în hexazecimal (începând cu Linux 2.6.26, a se vedea capabilities(7)).
Set de capacități ambientale, exprimat în hexazecimal (începând cu Linux 4.3, a se vedea capabilities(7)).
Valoarea bitului no_new_privs (începând cu Linux 4.10, a se vedea prctl(2)).
Modul seccomp al procesului (începând cu Linux 3.8, a se vedea seccomp(2)). 0 înseamnă SECCOMP_MODE_DISABLED; 1 înseamnă SECCOMP_MODE_STRICT; 2 înseamnă SECCOMP_MODE_FILTER. Acest câmp este furnizat numai dacă nucleul a fost construit cu opțiunea de configurare a nucleului CONFIG_SECCOMP activată.
Starea de atenuare a defectelor de speculație (începând cu Linux 4.17, a se vedea prctl(2)).
Masca hexazecimală a CPU-urilor pe care poate rula acest proces (începând cu Linux 2.6.24, a se vedea cpuset(7)).
La fel ca precedentul, dar în „format listă” (începând cu Linux 2.6.26, a se vedea cpuset(7)).
Masca nodurilor de memorie permise acestui proces (începând cu Linux 2.6.24, a se vedea cpuset(7)).
La fel ca precedentul, dar în „format listă” (începând cu Linux 2.6.26, a se vedea cpuset(7)).
Numărul de schimbări de context voluntare și involuntare ( începând cu Linux 2.6.23).
/proc/pid/syscall (începând cu Linux 2.6.27)
Acest fișier expune numărul apelului de sistem și registrele de argumente pentru apelul de sistem executat în prezent de proces, urmate de valorile indicatorului de stivă și ale registrelor contorului de program. Valorile tuturor celor șase registre de argument sunt expuse, deși majoritatea apelurilor de sistem utilizează mai puține registre.
Dacă procesul este blocat, dar nu într-un apel de sistem, fișierul afișează -1 în locul numărului apelului de sistem, urmat doar de valorile indicatorului de stivă și ale contorului de program. Dacă procesul nu este blocat, fișierul conține doar șirul „running (în curs de execuție)
Acest fișier este prezent numai dacă nucleul a fost configurat cu CONFIG_HAVE_ARCH_TRACEHOOK activată.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_ATTACH_FSCREDS; a se vedea ptrace(2).
/proc/pid/task/ (începând cu Linux 2.6.0)
Acesta este un director care conține un subdirector pentru fiecare fir din proces. Numele fiecărui subdirector este ID-ul numeric al firului de execuție (tid) al firului de execuție (a se vedea gettid(2)).
În fiecare dintre aceste subdirectoare, există un set de fișiere cu aceleași nume și conținut ca în directoarele /proc/pid. Pentru atributele care sunt partajate de toate firele de execuție, conținutul fiecărui fișier din subdirectoarele task/tid va fi același ca în fișierul corespunzător din directorul părinte /proc/pid (de exemplu, într-un proces cu mai multe fire, toate fișierele task/tid/cwd vor avea aceeași valoare ca fișierul /proc/pid/cwd din directorul părinte, deoarece toate firele dintr-un proces partajează un director de lucru). Pentru atributele care sunt distincte pentru fiecare fir, fișierele corespunzătoare din task/tid pot avea valori diferite (de exemplu, diferite câmpuri din fiecare dintre fișierele task/tid/status pot fi diferite pentru fiecare fir) , sau s-ar putea să nu existe deloc în /proc/pid.
Într-un proces cu mai multe fire, conținutul directorului /proc/pid/task nu este disponibil dacă firul principal s-a terminat deja (de obicei, apelând pthread_exit(3)).
/proc/pid/task/tid/children (începând cu Linux 3.5)
O listă, separată prin spații, a sarcinilor-copil ale acestei sarcini. Fiecare sarcină-copil este reprezentată de TID-ul său.
Această opțiune este destinată utilizării de către sistemul checkpoint-restore (CRIU) și furnizează în mod fiabil o listă de copii numai dacă toate procesele-copil sunt oprite sau înghețate. Aceasta nu funcționează corect dacă copiii sarcinii țintă ies în timp ce fișierul este citit! Copiii care ies pot face ca copiii care nu ies să fie omiși din listă. Acest lucru face ca această interfață să fie și mai nesigură decât abordările clasice bazate pe PID în cazul în care sarcina inspectată și copiii săi nu sunt înghețați, iar majoritatea codului nu ar trebui probabil să utilizeze această interfață.
Până la Linux 4.2, prezența acestui fișier era reglementată de opțiunea de configurare a nucleului CONFIG_CHECKPOINT_RESTORE. Începând cu Linux 4.2, aceasta este reglementată de opțiunea CONFIG_PROC_CHILDREN.
/proc/pid/timers (începând cu Linux 3.10)
O listă a temporizatoarelor POSIX pentru acest proces. Fiecare temporizator este listat cu o linie care începe cu șirul „ID:”. De exemplu:

ID: 1
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 0
ID: 0
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 1
    

Liniile afișate pentru fiecare temporizator au următoarele semnificații:
ID-ul pentru acest temporizator. Acesta nu este același cu ID-ul temporizatorului returnat de timer_create(2); mai degrabă, este același ID intern al nucleului care este disponibil prin câmpul si_timerid din structura siginfo_t (a se vedea sigaction(2)).
Acesta este numărul semnalului pe care acest temporizator îl utilizează pentru a transmite notificări, urmat de o bară oblică și apoi de valoarea sigev_value furnizată gestionarului de semnal. Valabil numai pentru temporizatoarele care notifică prin intermediul unui semnal.
Partea de dinaintea liniei oblice specifică mecanismul pe care acest temporizator îl utilizează pentru transmiterea notificărilor și este unul dintre „thread”, „signal” sau „none” Imediat după bara oblică este fie șirul „tid” pentru temporizatoarele cu notificare SIGEV_THREAD_ID, fie „pid” pentru temporizatoarele care notifică prin alte mecanisme. După „.” se află PID-ul procesului (sau ID-ul firului de execuție al firului de execuție al nucleului) care va primi un semnal în cazul în care temporizatorul trimite notificări prin intermediul unui semnal.
Acest câmp identifică ceasul pe care temporizatorul îl utilizează pentru măsurarea timpului. Pentru majoritatea ceasurilor, acesta este un număr care corespunde uneia dintre constantele CLOCK_* din spațiul utilizatorului expuse prin <time.h>. Temporizatoarele CLOCK_PROCESS_CPUTIME_ID se afișează cu o valoare de -6 în acest câmp. CLOCK_THREAD_CPUTIME_ID temporizatoarele se afișează cu o valoare de -2 în acest câmp.
Acest fișier este disponibil numai atunci când nucleul a fost configurat cu CONFIG_CHECKPOINT_RESTORE activată.
/proc/pid/timerslack_ns (începând cu Linux 4.6)
Acest fișier expune valoarea „curentă” a întârzierii temporizatorului procesului, exprimată în nanosecunde. Fișierul poate fi scris, permițând modificarea valorii de întârziere a temporizatorului procesului. Scrierea valorii 0 în acest fișier resetează temporizatorul „curent” la valoarea „implicită” a temporizatorului. Pentru detalii suplimentare, consultați discuția despre PR_SET_TIMERSLACK în prctl(2).
Inițial, permisiunea de a accesa acest fișier era reglementată de o verificare a modului de acces ptrace PTRACE_MODE_ATTACH_FSCREDS (a se vedea ptrace(2)). Cu toate acestea, această cerință a fost considerată ulterior prea strictă (și a avut ca efect secundar faptul că cerința ca un proces să aibă capacitatea CAP_SYS_PTRACE i-ar permite, de asemenea, să vizualizeze și să modifice memoria oricărui proces). Prin urmare, începând cu Linux 4.9, numai capacitatea („mai slabă”, cu mai puține privilegii) CAP_SYS_NICE este necesară pentru a accesa acest fișier.
/proc/pid/uid_map (începând cu Linux 3.5)
A se vedea user_namespaces(7).
/proc/pid/wchan (începând cu Linux 2.6.0)
Numele simbolic corespunzător locației din nucleu în care procesul se află în adormire.
Permisiunea de a accesa acest fișier este guvernată de o verificare a modului de acces «ptrace» PTRACE_MODE_READ_FSCREDS; a se vedea ptrace(2).
/proc/tid
Există un subdirector numeric pentru fiecare fir de execuție care nu este lider de grup de fire (adică un fir de execuție al cărui ID de fir nu este același cu ID-ul de proces); subdirectorul este denumit după ID-ul firului. Fiecare dintre aceste subdirectoare conține fișiere și subdirectoare care expun informații despre firul de execuție cu ID-ul firului tid. Conținutul acestor directoare este același cu directoarele /proc/pid/task/tid corespunzătoare.
Subdirectoarele /proc/tid nu sunt vizibile când se repetă prin /proc cu getdents(2) (și astfel nu sunt vizibile când se folosește ls(1) pentru a vizualiza conținutul /proc). Cu toate acestea, ruteile acestor directoare sunt vizibile pentru (adică, utilizabile ca argumente în) apelurile de sistem care operează pe nume de rute.
/proc/apm
Versiunea de gestionare avansată a energiei și informații despre baterie atunci când opțiunea CONFIG_APM este definită în momentul compilării nucleului.
/proc/buddyinfo
Acest fișier conține informații care sunt utilizate pentru diagnosticarea problemelor de fragmentare a memoriei. Fiecare linie începe cu identificarea nodului și numele zonei care, împreună, identifică o regiune de memorie. Acestea sunt urmate de numărul de fragmente disponibile într-o anumită ordine în care aceste zone sunt împărțite. Dimensiunea în octeți a unei anumite ordini este dată de formula:

(2^ordine) * PAGE_SIZE
    

Algoritmul de alocare binar buddy din cadrul nucleului va împărți un fragment în două fragmente de o ordine mai mică (deci cu jumătate din dimensiune) sau va combina două fragmente contigue într-un fragment mai mare de o ordine mai mare (deci cu dimensiune dublă) pentru a satisface cererile de alocare și pentru a contracara fragmentarea memoriei. Ordinea se potrivește cu numărul coloanei, atunci când numărătoarea începe de la zero.
De exemplu, într-un sistem x86-64:
Node 0, zone     DMA     1    1    1    0    2    1    1    0    1    1    3
Node 0, zone   DMA32    65   47    4   81   52   28   13   10    5    1  404
Node 0, zone  Normal   216   55  189  101   84   38   37   27    5    3  587
În acest exemplu, există un nod care conține trei zone și există 11 dimensiuni diferite ale fragmentelor. Dacă dimensiunea paginii este de 4 kiloocteți, atunci prima zonă numită DMA (pe x86 primii 16 megaocteți de memorie) are un fragment de 4 kiloocteți (ordinea 0) disponibil și are 3 fragmente de 4 megaocteți (ordinea 10) disponibile.
Dacă memoria este foarte fragmentată, contoarele pentru bucățile de ordin superior vor fi zero, iar alocarea de zone contigue mari va eșua.
Informații suplimentare despre zone pot fi găsite în /proc/zoneinfo.
/proc/bus
Conține subdirectoarele pentru magistralele instalate.
/proc/bus/pccard
Subdirector pentru dispozitive PCMCIA atunci când CONFIG_PCMCIA este activată la compilarea nucleului.
/proc/bus/pccard/drivers
/proc/bus/pci
Conține diverse subdirectoare de magistrale și pseudofișiere care conțin informații despre magistrale PCI, dispozitive instalate și controlori de dispozitive. Unele dintre aceste fișiere nu sunt ASCII.
/proc/bus/pci/devices
Informații despre dispozitivele PCI. Acestea pot fi accesate prin lspci(8) și setpci(8).
/proc/cgroups (începând cu Linux 2.6.24)
A se vedea cgroups(7).
/proc/cmdline
Argumente transmise nucleului Linux în momentul pornirii. Adesea se realizează prin intermediul unui administrator de pornire, cum ar fi lilo(8) sau grub(8).
/proc/config.gz (începând cu Linux 2.6)
Acest fișier expune opțiunile de configurare care au fost utilizate pentru a construi nucleul care rulează în prezent, în același format în care ar fi afișate în fișierul .config rezultat la configurarea nucleului (utilizând make xconfig, make config, sau similar). Conținutul fișierului este comprimat; vizualizați-l sau căutați-l folosind zcat(1) și zgrep(1). Atâta timp cât nu au fost făcute modificări la fișierul următor, conținutul /proc/config.gz este același cu cel furnizat de:

cat /lib/modules/$(uname -r)/build/.config
    

/proc/config.gz este furnizat numai în cazul în care nucleul este configurat cu CONFIG_IKCONFIG_PROC.
/proc/crypto
O listă a cifrurilor furnizate de API-ul de criptare al nucleului. Pentru detalii, consultați documentația nucleului Linux Kernel Crypto API disponibilă în directorul sursă al nucleului Documentation/crypto/ (sau Documentation/DocBook înainte de Linux 4.10; documentația poate fi construită utilizând o comandă precum make htmldocs în directorul rădăcină al arborelui sursă al nucleului).
/proc/cpuinfo
Aceasta este o colecție de elemente dependente de CPU și de arhitectura sistemului, pentru fiecare arhitectură suportată existând o listă diferită. Două intrări comune sunt processor care oferă numărul de CPU-uri și bogomips; o constantă de sistem care este calculată în timpul inițializării nucleului. Mașinile SMP au informații pentru fiecare CPU. Comanda lscpu(1) își adună informațiile din acest fișier.
/proc/devices
Listare text a numerelor majore și a grupurilor de dispozitive. Aceasta poate fi folosită de scripturile MAKEDEV pentru consecvență cu nucleul.
/proc/diskstats (începând cu Linux 2.5.69)
Acest fișier conține statisticile de In/Ieș ale discului pentru fiecare dispozitiv de disc. Consultați fișierul sursă al nucleului Linux Documentation/admin-guide/iostats.rst (sau Documentation/iostats.txt înainte de Linux 5.3) pentru informații suplimentare.
/proc/dma
Aceasta este o listă a canalelor DMA (acces direct la memorie) ISA înregistrate în uz.
/proc/driver
Subdirectorul este gol.
/proc/execdomains
Lista domeniilor de execuție (personalități ABI).
/proc/fb
Informații privind memoria tampon a cadrelor de imagine atunci când CONFIG_FB este definită în timpul compilării nucleului.
/proc/filesystems
O listă text a sistemelor de fișiere care sunt acceptate de nucleu, și anume sistemele de fișiere care au fost compilate în nucleu sau ale căror module ale nucleului sunt încărcate în prezent; (a se vedea și filesystems(5)). Dacă un sistem de fișiere este marcat cu „nodev”, aceasta înseamnă că nu necesită un dispozitiv bloc pentru a fi montat (de exemplu, sistem de fișiere virtual, sistem de fișiere de rețea).
De altfel, acest fișier poate fi utilizat de mount(8) atunci când nu este specificat niciun sistem de fișiere și nu a reușit să determine tipul sistemului de fișiere. Atunci sunt încercate sistemele de fișiere conținute în acest fișier (cu excepția celor care sunt marcate cu „nodev”).
/proc/fs
Conține subdirectoare care la rândul lor conțin fișiere cu informații despre (anumite) sisteme de fișiere montate.
/proc/ide
Acest director există pe sistemele cu magistrală IDE. Există directoare pentru fiecare canal IDE și dispozitiv atașat. Fișierele includ:

cache              dimensiunea tamponului în Ko
capacity           numărul de sectoare
driver             versiunea controlorului
geometry           geometria fizică și logică
identify           în hexazecimal
media              tipul de suport media
model              numărul modelului fabricantului
settings           configurația unității
smart_thresholds   praguri de gestionare a discurilor IDE (în hex)
smart_values       valori de gestionare a discurilor IDE (în hex)
    

Instrumentul hdparm(8) oferă acces la aceste informații într-un format amiabil.
/proc/interrupts
Acesta este utilizat pentru a înregistra numărul de întreruperi per CPU per dispozitiv IO. Începând cu Linux 2.6.24, cel puțin pentru arhitecturile i386 și x86-64, sunt incluse și întreruperile interne sistemului (adică neasociate unui dispozitiv ca atare), cum ar fi NMI (nonmaskable interrupt), LOC (local timer interrupt) și, pentru sistemele SMP, TLB (TLB flush interrupt), RES (rescheduling interrupt), CAL (remote function call interrupt) și eventual altele. Formatare foarte ușor de citit, realizată în ASCII.
/proc/iomem
Harta memoriei de In/Ieș în Linux 2.4.
/proc/ioports
Aceasta este o listă a regiunilor porturilor de intrare-ieșire înregistrate în prezent și care sunt în uz.
/proc/kallsyms (începând cu Linux 2.5.71)
Acesta conține definițiile simbolurilor exportate de nucleu utilizate de instrumentele modules(X) pentru a lega dinamic și a asocia module încărcabile. În Linux 2.5.47 și anterior, un fișier similar cu o sintaxă ușor diferită se numea ksyms.
/proc/kcore
Acest fișier reprezintă memoria fizică a sistemului și este stocat în formatul de fișier de bază ELF. Cu ajutorul acestui pseudofișier și al unui nucleu binar (/usr/src/linux/vmlinux), GDB poate fi utilizat pentru a examina starea curentă a oricăror structuri de date ale nucleului.
Lungimea totală a fișierului este dimensiunea memoriei fizice (RAM) plus 4Kio.
/proc/keys (începând cu Linux 2.6.10)
A se vedea keyrings(7).
/proc/key-users (începând cu Linux 2.6.10)
A se vedea keyrings(7).
/proc/kmsg
Acest fișier poate fi utilizat în locul apelului de sistem syslog(2) pentru a citi mesajele nucleului. Un proces trebuie să aibă privilegii de superutilizator pentru a citi acest fișier și un singur proces trebuie să citească acest fișier. Acest fișier nu trebuie citit dacă rulează un proces syslog care utilizează funcția de apel de sistem syslog(2) pentru a înregistra mesajele nucleului.
Informațiile din acest fișier sunt preluate cu programul dmesg(1).
/proc/kpagecgroup (începând cu Linux 4.3)
Acest fișier conține un număr de nod-i pe 64 de biți al cgroup-ului de memorie la care este încărcată fiecare pagină, indexat în funcție de numărul cadrului de pagină (a se vedea discuția despre /proc/pid/pagemap).
Fișierul /proc/kpagecgroup este prezent numai dacă opțiunea de configurare a nucleului CONFIG_MEMCG este activată.
/proc/kpagecount (începând cu Linux 2.6.25)
Acest fișier conține o contorizare pe 64 de biți a numărului de ori în care fiecare cadru de pagină fizic este cartografiat, indexat după numărul cadrului de pagină (a se vedea discuția despre /proc/pid/pagemap).
Fișierul /proc/kpagecount este prezent numai dacă opțiunea de configurare a nucleului CONFIG_PROC_PAGE_MONITOR este activată.
/proc/kpageflags (începând cu Linux 2.6.25)
Acest fișier conține măști pe 64 de biți corespunzătoare fiecărui cadru de pagină fizic; este indexat în funcție de numărul cadrului de pagină (a se vedea discuția despre /proc/pid/pagemap). Biții sunt după cum urmează:
0 - KPF_LOCKED
1 - KPF_ERROR
2 - KPF_REFERENCED
3 - KPF_UPTODATE
4 - KPF_DIRTY
5 - KPF_LRU
6 - KPF_ACTIVE
7 - KPF_SLAB
8 - KPF_WRITEBACK
9 - KPF_RECLAIM
10 - KPF_BUDDY
11 - KPF_MMAP (începând cu Linux 2.6.131)
12 - KPF_ANON (începând cu Linux 2.6.131)
13 - KPF_SWAPCACHE (începând cu Linux 2.6.131)
14 - KPF_SWAPBACKED (începând cu Linux 2.6.131)
15 - KPF_COMPOUND_HEAD (începând cu Linux 2.6.131)
16 - KPF_COMPOUND_TAIL (începând cu Linux 2.6.131)
17 - KPF_HUGE (începând cu Linux 2.6.131)
18 - KPF_UNEVICTABLE (începând cu Linux 2.6.131)
19 - KPF_HWPOISON (începând cu Linux 2.6.131)
20 - KPF_NOPAGE (începând cu Linux 2.6.131)
21 - KPF_KSM (începând cu Linux 2.6.32)
22 - KPF_THP (începând cu Linux 3.4)
23 - KPF_BALLOON (începând cu Linux 3.18)
24 - KPF_ZERO_PAGE (începând cu Linux 4.0)
25 - KPF_IDLE (începând cu Linux 4.3)
Pentru detalii suplimentare privind semnificația acestor biți, consultați fișierul sursă al nucleului Documentation/admin-guide/mm/pagemap.rst. Înainte de Linux 2.6.29, KPF_WRITEBACK, KPF_RECLAIM, KPF_BUDDY și KPF_LOCKED nu raportau corect.
Fișierul /proc/kpageflags este prezent numai dacă opțiunea de configurare a nucleului CONFIG_PROC_PAGE_MONITOR este activată.
/proc/ksyms (Linux 1.1.23–2.5.47)
A se vedea /proc/kallsyms.
/proc/loadavg
Primele trei câmpuri din acest fișier sunt cifre medii de încărcare care indică numărul de lucrări aflate în coada de execuție (starea R) sau în așteptarea operațiilor de In/Ieș pe disc (starea D) în medie pe 1, 5 și 15 minute. Acestea sunt aceleași cu cifrele medii de încărcare furnizate de uptime(1) și de alte programe. Al patrulea câmp constă din două numere separate de o bară oblică (/). Primul dintre acestea este numărul de entități de programare ale nucleului care pot fi executate în prezent (procese, fire). Valoarea de după bara oblică este numărul de entități de planificare a nucleului care există în prezent pe sistem. Al cincilea câmp este PID-ul procesului care a fost creat cel mai recent pe sistem.
/proc/locks
Acest fișier arată blocajele (flock(2) și fcntl(2)) și locațiile (fcntl(2)) curente ale fișierelor.
Un exemplu de conținut afișat în acest fișier este următorul:

1: POSIX  ADVISORY  READ  5433 08:01:7864448 128 128
2: FLOCK  ADVISORY  WRITE 2001 08:01:7864554 0 EOF
3: FLOCK  ADVISORY  WRITE 1568 00:2f:32388 0 EOF
4: POSIX  ADVISORY  WRITE 699 00:16:28457 0 EOF
5: POSIX  ADVISORY  WRITE 764 00:16:21448 0 0
6: POSIX  ADVISORY  READ  3548 08:01:7867240 1 1
7: POSIX  ADVISORY  READ  3548 08:01:7865567 1826 2335
8: OFDLCK ADVISORY  WRITE -1 08:01:8713209 128 191
    

Câmpurile afișate pe fiecare linie sunt următoarele:
[1]
Poziția ordinală a blocării în listă.
[2]
Tipul de blocare. Valorile care pot apărea aici includ:
Acesta este un fișier de blocare BSD creat folosind flock(2).
Aceasta este o blocare OFD (Open File Description) creată cu ajutorul fcntl(2).
Aceasta este o blocare de interval de octeți POSIX creată utilizând fcntl(2).
[3]
Printre șirurile care pot apărea aici se numără următoarele:
Aceasta este o blocare de avizare.
Aceasta este o blocare obligatorie.
[4]
Tipul de blocare. Valorile care pot apărea aici sunt:
Aceasta este o blocare de citire POSIX sau OFD, sau o blocare partajată BSD.
Aceasta este o blocare de scriere POSIX sau OFD, sau o blocare exclusivă BSD.
[5]
PID-ul procesului care deține blocajul.
Deoarece blocajele OFD nu sunt deținute de un singur proces (deoarece mai multe procese pot avea descriptori de fișier care se referă la aceeași descriere de fișier deschis), valoarea -1 este afișată în acest câmp pentru blocajele OFD; (înainte de Linux 4.14, o eroare a făcut ca PID-ul procesului care a achiziționat inițial blocajul să fie afișat în locul valorii -1).
[6]
Trei subcâmpuri separate prin două puncte (:) care identifică ID-ul dispozitivului major și minor al dispozitivului care conține sistemul de fișiere în care se află fișierul blocat, urmat de numărul de nod-i al fișierului blocat.
[7]
Decalajul de octeți al primului octet al blocării. Pentru blocajele BSD, această valoare este întotdeauna 0.
[8]
Decalajul de octeți al ultimului octet al blocării. EOF în acest câmp înseamnă că blocarea se extinde până la sfârșitul fișierului. Pentru blocajele BSD, valoarea indicată este întotdeauna EOF.
Începând cu Linux 4.9, lista de blocaje afișată în /proc/locks este filtrată pentru a afișa doar blocajele pentru procesele din spațiul de nume PID (a se vedea pid_namespaces(7)) pentru care a fost montat sistemul de fișiere /proc; (în spațiul de nume PID inițial, nu există nicio filtrare a înregistrărilor afișate în acest fișier).
Comanda lslocks(8) oferă ceva mai multe informații despre fiecare blocare.
/proc/malloc (doar până la Linux 2.2 inclusiv)
Acest fișier este prezent numai dacă CONFIG_DEBUG_MALLOC a fost definită în timpul compilării.
/proc/meminfo
Acest fișier raportează statistici privind utilizarea memoriei în sistem. Este utilizat de free(1) pentru a raporta cantitatea de memorie liberă și utilizată (atât fizică, cât și swap) pe sistem, precum și memoria partajată și memoriile tampon utilizate de nucleu. Fiecare linie a fișierului constă dintr-un nume de parametru, urmat de două puncte, valoarea parametrului și o unitate de măsură opțională (de exemplu, „kB”). Lista de mai jos descrie numele parametrilor și specificatorul de format necesar pentru a citi valoarea câmpului. Cu excepția celor menționate mai jos, toate câmpurile au fost prezente cel puțin de la Linux 2.6.0. Unele câmpuri sunt afișate numai dacă nucleul a fost configurat cu diverse opțiuni; aceste dependențe sunt notate în listă.
Memoria RAM totală utilizabilă (adică memoria RAM fizică minus câțiva biți rezervați și codul binar al nucleului).
Suma LowFree+HighFree.
O estimare a cantității de memorie disponibilă pentru pornirea de noi aplicații, fără utilizarea memoria spațiului de interschimb (swap).
Stocarea relativ temporară pentru blocuri de disc brute care nu ar trebui să devină foarte mari (aproximativ 20 Mo).
Cache în memorie pentru fișierele citite de pe disc (cache-ul de pagină). Nu include SwapCached.
Memoria care a fost plasată cândva în spațiul de interschimb (swap), care a fost eliminată, dar se află în continuare în fișierul de interschimb; (dacă presiunea asupra memoriei este ridicată, aceste pagini nu trebuie să fie plasate din nou în spațiul de interschimb, deoarece sunt deja în fișierul de interschimb, acest lucru economisește I/O).
Memorie care a fost utilizată mai recent și care, de obicei, nu este recuperată decât dacă este absolut necesar.
Memorie care a fost utilizată mai puțin recent. Aceasta este mai eligibilă pentru a fi recuperată în alte scopuri.
[A se documenta]
[A se documenta]
[A se documenta]
[A se documenta]
(De la Linux 2.6.28 la Linux 2.6.30, CONFIG_UNEVICTABLE_LRU a fost necesar.) [A se documenta.]
(De la Linux 2.6.28 la Linux 2.6.30, CONFIG_UNEVICTABLE_LRU a fost necesar.) [A se documenta.]
(Începând cu Linux 2.6.19, este necesar CONFIG_HIGHMEM). Cantitatea totală de highmem. Highmem este toată memoria peste ~860 Mo de memorie fizică. Zonele highmem sunt destinate utilizării de către programele din spațiul utilizatorului sau pentru memoria cache de pagină. Nucleul trebuie să utilizeze trucuri pentru a accesa această memorie, ceea ce o face mai lentă la acces decât lowmem.
(Începând cu Linux 2.6.19, CONFIG_HIGHMEM este necesar.) Cantitatea de highmem liberă.
(Începând cu Linux 2.6.19, este necesar CONFIG_HIGHMEM.) Cantitatea totală de lowmem. Lowmem este memoria care poate fi utilizată pentru tot ceea ce poate fi utilizat pentru highmem, dar este, de asemenea, disponibilă pentru utilizarea de către nucleu pentru propriile sale structuri de date. Printre multe alte lucruri, este locul în care este alocat tot ce vine de la Slab. Se întâmplă lucruri rele atunci când nu mai ai lowmem.
(Începând cu Linux 2.6.19, este necesar CONFIG_HIGHMEM.) Cantitatea de lowmem liberă.
(CONFIG_MMU este necesar.) [A se documenta.]
Cantitatea totală de spațiu de interschimb (swap) disponibil.
Cantitatea de spațiu de interschimb (swap) care este neutilizată în prezent.
Memorie care așteaptă să fie scrisă înapoi pe disc.
Memorie care este în curs de rescriere pe disc.
Pagini care nu sunt stocate în fișiere, cartografiate în tabelele de pagini din spațiul utilizatorului.
Fișiere care au fost plasate în memorie (cu mmap(2)), cum ar fi bibliotecile.
Cantitatea de memorie consumată în sistemele de fișiere tmpfs(5).
Alocațiile nucleului pe care nucleul va încerca să le recupereze sub presionarea memoriei. Include SReclaimable (mai jos) și alte alocări directe cu un instrument de micșorare „shrinker”.
Cache pentru structuri de date în interiorul nucleului. (A se vedea slabinfo(5).)
Parte din Slab, care ar putea fi recuperată, cum ar fi cache-urile.
Parte din Slab, care nu poate fi recuperată prin presionarea memoriei.
Cantitatea de memorie alocată pentru stivele de nucleu.
Cantitatea de memorie dedicată celui mai mic nivel al tabelelor de pagini.
(CONFIG_QUICKLIST este necesar.) [A se documenta.]
Pagini NFS trimise la server, dar care nu au fost încă transferate în stocarea stabilă.
Memorie utilizată pentru „tampoanele de salt” ale dispozitivului de blocuri.
Memorie utilizată de FUSE pentru tampoanele de rescriere temporare.
Aceasta este cantitatea totală de memorie disponibilă în prezent pentru a fi alocată pe sistem, exprimată în kilobiți. Această limită este respectată numai dacă este activată contabilitatea strict „overcommit” (modul 2 în /proc/sys/vm/overcommit_memory). Limita este calculată conform formulei descrise în /proc/sys/vm/overcommit_memory. Pentru detalii suplimentare, consultați fișierul sursă al nucleului Documentation/vm/overcommit-accounting.rst.
Cantitatea de memorie alocată în prezent pe sistem. Memoria alocată este o sumă a întregii memorii care a fost alocată de procese, chiar dacă aceasta nu a fost „utilizată” de acestea până în prezent. Un proces care alocă 1 Go de memorie (utilizând malloc(3) sau similar), dar atinge doar 300 Mo din această memorie va apărea ca utilizând doar 300 Mo de memorie, chiar dacă are spațiul de adrese alocat pentru întregul 1 Go.
Acest 1 Go este memoria care a fost „rezervată” de către VM și poate fi utilizată în orice moment de către aplicația de alocare. În cazul în care sistemul are activată funcția strict overcommit (modul 2 în /proc/sys/vm/overcommit_memory), alocările care ar depăși CommitLimit nu vor fi permise. Acest lucru este util în cazul în care trebuie să se garanteze că procesele nu vor eșua din cauza lipsei de memorie odată ce memoria a fost alocată cu succes.
Dimensiunea totală a zonei de memorie vmalloc.
Cantitatea din zona vmalloc care este utilizată. Începând cu Linux 4.4, acest câmp nu mai este calculat și este codificat ca 0. Consultați /proc/vmallocinfo.
Cel mai mare bloc contiguu din zona vmalloc care este liber. Începând cu Linux 4.4, acest câmp nu mai este calculat și este codificat ca 0. Consultați /proc/vmallocinfo.
(CONFIG_MEMORY_FAILURE este necesar.) [A se documenta.]
Afișează cantitatea de memorie marcată de madvise(2) MADV_FREE.
(Este necesar CONFIG_TRANSPARENT_HUGEPAGE.) Pagini imense care nu sunt stocate în fișiere, cartografiate în tabelele de pagini din spațiul utilizatorului.
(Este necesar CONFIG_TRANSPARENT_HUGEPAGE.) Memorie utilizată de memoria partajată (shmem) și tmpfs(5) alocată cu pagini imense.
(Este necesar CONFIG_TRANSPARENT_HUGEPAGE.) Memoria partajată este cartografiată în spațiul utilizatorului cu pagini imense.
Numărul total de pagini CMA (Contiguous Memory Allocator); (este necesar CONFIG_CMA).
Eliberează paginile CMA (Contiguous Memory Allocator); (este necesar CONFIG_CMA).
(Este necesar CONFIG_HUGETLB_PAGE). Dimensiunea grupului de pagini imense.
(Este necesar CONFIG_HUGETLB_PAGE). Numărul de pagini imense din grup care nu sunt încă alocate.
(Este necesar CONFIG_HUGETLB_PAGE). Acesta este numărul de pagini imense pentru care s-a făcut un angajament de alocare din grup, dar nicio alocare nu a fost încă făcută. Aceste pagini imense rezervate garantează faptul că o aplicație va putea să aloce o pagină imensă din fondul de pagini imense în momentul producerii unei erori.
(CONFIG_HUGETLB_PAGE este necesar). Acesta este numărul de pagini imense din grup peste valoarea din /proc/sys/vm/nr_hugepages. Numărul maxim de pagini imense excedentare este controlat de /proc/sys/vm/nr_overcommit_hugepages.
(Este necesar CONFIG_HUGETLB_PAGE). Dimensiunea paginilor imense.
Numărul de octeți de RAM cartografiați liniar de nucleu în pagini de 4 ko. (x86)
Numărul de octeți de RAM cartografiați liniar de către nucleu în pagini de 4 Mo. (x86 cu CONFIG_X86_64 sau CONFIG_X86_PAE activat).
Numărul de octeți de RAM cartografiați liniar de către nucleu în pagini de 2 Mo. (x86 cu CONFIG_X86_64 sau CONFIG_X86_PAE activat).
(x86 cu CONFIG_X86_64 și CONFIG_X86_DIRECT_GBPAGES activate)
/proc/modules
O listă text a modulelor care au fost încărcate de sistem. A se vedea, de asemenea, lsmod(8).
/proc/mounts
Înainte de Linux 2.4.19, acest fișier era o listă a tuturor sistemelor de fișiere montate în prezent pe sistem. Odată cu introducerea spațiilor de nume de montare per-proces în Linux 2.4.19 (consultați mount_namespaces(7)), acest fișier a devenit o legătură către /proc/self/mounts, care enumeră montările din propriul spațiu de nume de montare al procesului. Formatul acestui fișier este documentat în fstab(5).
/proc/mtrr
Registre de intervale de tipuri de memorie („Memory Type Range Registers”: MTTR). Consultați fișierul sursă al nucleului Linux Documentation/x86/mtrr.rst (sau Documentation/x86/mtrr.txt înainte de Linux 5.2, sau Documentation/mtrr.txt înainte de Linux 2.6.28) pentru detalii.
/proc/net
Acest director conține diverse fișiere și subdirectoare care conțin informații despre stratul de rețea. Fișierele conțin structuri ASCII și sunt, prin urmare, citibile cu cat(1). Cu toate acestea, suita standard netstat(8) oferă un acces mult mai curat la aceste fișiere.
Odată cu apariția spațiilor de nume de rețea, diverse informații referitoare la stiva de rețea sunt virtualizate (a se vedea network_namespaces(7)). Astfel, începând cu Linux 2.6.25, /proc/net este o legătură simbolică către directorul /proc/self/net, care conține aceleași fișiere și directoare enumerate mai jos. Cu toate acestea, aceste fișiere și directoare expun acum informații pentru spațiul de nume al rețelei din care face parte procesul.
/proc/net/arp
Acesta conține o descărcare citibilă ASCII a tabelului ARP al nucleului utilizat pentru rezolvarea adreselor. Acesta va afișa atât intrările ARP învățate dinamic, cât și cele preprogramate. Formatul este următorul:

IP address     HW type   Flags     HW address          Mask   Device
192.168.0.50   0x1       0x2       00:50:BF:25:68:F3   *      eth0
192.168.0.250  0x1       0xc       00:00:00:00:00:00   *      eth0
    

Aici „IP address” este adresa IPv4 a mașinii, iar „HW type” este tipul hardware al adresei din RFC 826. Fanioanele sunt fanioanele interne ale structurii ARP (astfel cum sunt definite în /usr/include/linux/if_arp.h), iar „HW address” este corespondența nivelului de legătură de date pentru adresa IP respectivă, dacă este cunoscută.
/proc/net/dev
Pseudofișierul dev conține informații privind starea dispozitivului de rețea. Acesta oferă numărul de pachete primite și trimise, numărul de erori și coliziuni și alte statistici de bază. Acestea sunt utilizate de programul ifconfig(8) pentru a raporta starea dispozitivului. Formatul este:
Inter-|   Receive                                                |  Transmit

face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
/proc/net/dev_mcast
Definit în /usr/src/linux/net/core/dev_mcast.c:

indx interface_name  dmi_u dmi_g dmi_address
2    eth0            1     0     01005e000001
3    eth1            1     0     01005e000001
4    eth2            1     0     01005e000001
    

/proc/net/igmp
Internet Group Management Protocol. Definit în /usr/src/linux/net/core/igmp.c.
/proc/net/rarp
Acest fișier utilizează același format ca fișierul arp și conține baza de date curentă de corespondență inversă utilizată pentru a furniza serviciile de căutare inversă a adreselor rarp(8). Dacă RARP nu este configurat în cadrul nucleului, acest fișier nu va fi prezent.
/proc/net/raw
Păstrează o descărcare a tabelului de socluri RAW. Multe dintre informații nu sunt utile în afară de depanare. Valoarea „sl” este slotul hash al nucleului pentru soclu, „local_address” este adresa locală și perechea de numere de protocol. „St” este starea internă a soclului. Valorile „tx_queue” și „rx_queue” reprezintă coada de date de ieșire și de intrare în ceea ce privește utilizarea memoriei nucleului. Câmpurile „tr”, „tm->when” și „rexmits” nu sunt utilizate de RAW. Câmpul „uid” conține UID-ul efectiv al creatorului soclului.
/proc/net/snmp
Acest fișier conține datele ASCII necesare pentru bazele de informații de gestionare IP, ICMP, TCP și UDP pentru un agent SNMP.
/proc/net/tcp
Deține o descărcare a tabelului de socluri TCP. Multe dintre informații nu sunt utile în afară de depanare. Valoarea „sl” este slotul hash al nucleului pentru socket, „local_address” este perechea adresă locală și număr de port. Valoarea „rem_address” este perechea de adresă și număr de port de la distanță (dacă este conectată). „St” este starea internă a soclului. „tx_queue” și „rx_queue” sunt cozile de date de ieșire și de intrare în ceea ce privește utilizarea memoriei nucleului. Câmpurile „tr”, „tm->when” și „rexmits” dețin informații interne despre starea soclului nucleului și sunt utile doar pentru depanare. Câmpul „uid” conține UID-ul efectiv al creatorului soclului.
/proc/net/udp
Deține o descărcare a tabelului de socluri UDP. Multe dintre informații nu sunt utile în afară de depanare. Valoarea „sl” este slotul hash al nucleului pentru soclu, „local_address” este perechea adresă locală și număr de port. Valoarea „rem_address” este perechea de adresă și număr de port de la distanță (dacă este conectată). „St” este starea internă a soclului. „tx_queue” și „rx_queue” sunt cozile de date de ieșire și de intrare în ceea ce privește utilizarea memoriei nucleului. Câmpurile „tr”, „tm->when” și „rexmits” nu sunt utilizate de UDP. Câmpul „uid” conține UID-ul efectiv al creatorului soclului. Formatul este:
sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid

1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
/proc/net/unix
Listează soclurile de domeniu UNIX prezente în sistem și starea lor. Formatul este:
Num RefCount Protocol Flags    Type St Inode Path

0: 00000002 00000000 00000000 0001 03 42
1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
Câmpurile sunt următoarele:
numărul de slot al tabelului nucleului.
numărul de utilizatori ai soclului.
în prezent este întotdeauna 0.
fanioanele interne ale nucleului care păstrează starea soclului.
tipul soclului. Pentru socluri SOCK_STREAM, acesta este 0001; pentru socluri SOCK_DGRAM, acesta este 0002; iar pentru socluri SOCK_SEQPACKET, acesta este 0005.
starea internă a soclului.
numărul nodului-i al soclului.
numele de rută atașată (dacă există) al soclului. Soclurile din spațiul de nume abstract sunt incluse în listă și sunt afișate cu o rută Path care începe cu caracterul „@”.
/proc/net/netfilter/nfnetlink_queue
Acest fișier conține informații despre coada de așteptare din spațiul utilizatorului netfilter, dacă este utilizată. Fiecare linie reprezintă o coadă. Cozile care nu au fost subscrise de spațiul utilizatorului nu sunt afișate.


1 4207 0 2 65535 0 0 0 1
(1) (2) (3)(4) (5) (6) (7) (8)

Câmpurile din fiecare linie sunt:
(1)
ID-ul cozii. Se potrivește cu ceea ce este specificat în opțiunile --queue-num sau --queue-balance pentru obiectivul iptables(8) NFQUEUE. Consultați iptables-extensions(8) pentru mai multe informații.
(2)
ID-ul portului netlink înscris în coadă.
(3)
Numărul de pachete aflate în coada de așteptare și care așteaptă să fie procesate de aplicație.
(4)
Modul de copiere al cozii. Acesta este fie 1 (numai metadate), fie 2 (copiază și datele utile în spațiul utilizatorului).
(5)
Intervalul de copiere; adică, câți octeți din sarcina utilă a pachetului ar trebui copiați cel mult în spațiul utilizatorului.
(6)
coadă abandonată. Numărul de pachete care au trebuit să fie abandonate de nucleu deoarece prea multe pachete așteaptă deja ca spațiul utilizator să trimită înapoi verdictele obligatorii de acceptare/abandonare.
(7)
coadă de utilizator abandonată. Numărul de pachete care au fost abandonate în cadrul subsistemului netlink. Astfel de abandonări au loc, de obicei, atunci când memoria tampon a soclului corespunzător este plină; cu alte cuvinte, spațiul utilizator nu este capabil să citească mesajele suficient de repede.
(8)
număr de secvență. Fiecare pachet aflat în coadă este asociat cu un număr de secvență (32 de biți) care crește monoton. Acesta arată ID-ul celui mai recent pachet aflat în coadă.
Ultimul număr există doar din motive de compatibilitate și este întotdeauna 1.
/proc/partitions
Conține numerele majore și minore ale fiecărei partiții, precum și numărul de blocuri de 1024 de octeți și numele partiției.
/proc/pci
Aceasta este o listă a tuturor dispozitivelor PCI găsite în timpul inițializării nucleului și a configurației acestora.
Acest fișier a fost depreciat în favoarea unei noi interfețe /proc pentru PCI (/proc/bus/pci). Acesta a devenit opțional în Linux 2.2 (disponibil cu CONFIG_PCI_OLD_PROC activată la compilarea nucleului). A devenit din nou activ neopțional în Linux 2.4. Apoi, a fost depreciat în Linux 2.6 (încă disponibil cu CONFIG_PCI_LEGACY_PROC activată) și, în cele din urmă, eliminat complet din Linux 2.6.17.
/proc/profile (începând cu Linux 2.4)
Acest fișier este prezent numai dacă nucleul a fost inițiat cu opțiunea de linie de comandă profile=1. Acesta expune informațiile de profilare ale nucleului într-un format binar pentru utilizarea de către readprofile(1). Scrierea (de exemplu, un șir gol) în acest fișier reinițializează contoarele de profilare; pe unele arhitecturi, scrierea unui număr întreg binar „multiplicator de profilare” de dimensiune sizeof(int) stabilește frecvența întreruperilor de profilare.
/proc/scsi
Un director cu pseudofișierul de nivel mediu scsi și diverse directoare de controlori SCSI de nivel scăzut, care conțin un fișier pentru fiecare gazdă SCSI din acest sistem, toate oferind starea unei părți a subsistemului IO SCSI. Aceste fișiere conțin structuri ASCII și pot fi citite, prin urmare, cu cat(1).
De asemenea, puteți scrie în unele fișiere pentru a reconfigura subsistemul sau pentru a activa sau dezactiva anumite funcții.
/proc/scsi/scsi
Aceasta este o listă a tuturor dispozitivelor SCSI cunoscute de nucleu. În prezent, scsi acceptă numai comanda add-single-device care permite utilizatorului root să adauge un dispozitiv conectat la cald la lista de dispozitive cunoscute.
Comanda

echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
    

va determina gazda scsi1 să caute pe canalul SCSI 0 un dispozitiv cu ID 5 LUN 0. Dacă există deja un dispozitiv cunoscut la această adresă sau dacă adresa este nevalidă, va fi returnată o eroare.
/proc/scsi/nume-controlor
nume-controlor poate fi în prezent NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore sau wd7000. Aceste directoare apar pentru toi controlorii care au înregistrat cel puțin un SCSI HBA. Fiecare director conține un fișier pentru fiecare gazdă înregistrată. Fiecare fișier-gazdă este denumit după numărul atribuit gazdei în timpul inițializării.
Citirea acestor fișiere va arăta de obicei configurația controlorului și a gazdei, statistici și așa mai departe.
Scrierea în aceste fișiere permite diferite lucruri pe diferite gazde. De exemplu, cu comenzile latency și nolatency, root poate activa și dezactiva codul de măsurare a latenței comenzilor în controlorul eata_dma. Cu comenzile lockup și unlock, root poate controla blocajele de magistrală simulate de controlorul scsi_debug.
/proc/self
Acest director se referă la procesul care accesează sistemul de fișiere /proc și este identic cu directorul /proc numit de ID-ul de proces al aceluiași proces.
/proc/slabinfo
Informații despre memoriile cache ale nucleului. Consultați slabinfo(5) pentru detalii.
/proc/stat
statistici nucleu/sistem. Variază în funcție de arhitectură. Intrările obișnuite includ:
Timpul, măsurat în unități de USER_HZ (1/100 de secundă pe majoritatea arhitecturilor, utilizați sysconf(_SC_CLK_TCK) pentru a obține valoarea corectă), pe care sistemul (linia „cpu”) sau CPU-ul specific (linia „cpuN”) l-a petrecut în diferite stări:
(1) Timpul petrecut în modul utilizator.
(2) Timpul petrecut în modul utilizator cu prioritate scăzută (nice).
(3) Timpul petrecut în modul sistem.
(4) Timpul petrecut în sarcină inactivă. Această valoare ar trebui să fie USER_HZ ori a doua intrare din pseudo-fila /proc/uptime.
(5) Timpul de așteptare a finalizării operațiilor de In/Ieș. Această valoare nu este fiabilă, din următoarele motive:
CPU nu va aștepta ca operațiile de In/Ieș să se finalizeze; iowait este timpul în care o sarcină așteaptă ca operația de In/Ieș să se finalizeze. Atunci când un CPU intră în starea de inactivitate pentru o sarcină de In/Ieș nerezolvată, o altă sarcină va fi programată pe acest CPU.
Pe un CPU cu mai multe nuclee, sarcina care așteaptă finalizarea operațiilor de In/Ieș nu rulează pe niciun CPU, astfel încât iowait-ul fiecărui CPU este dificil de calculat.
Valoarea din acest câmp poate descrește în anumite condiții.
(6) Timpul petrecut pentru a furniza întreruperi.
(7) Timpul petrecut pentru a furniza softirqs.
(8) Timpul furat, care este timpul petrecut în alte sisteme de operare atunci când se execută într-un mediu virtualizat
(9) Timpul petrecut cu rularea unui CPU virtual pentru sistemele de operare invitate sub controlul nucleului Linux.
(10) Timpul petrecut cu un invitat „niced” (CPU virtual pentru sistemele de operare invitate sub controlul nucleului Linux).
Numărul de pagini pe care sistemul le-a paginat și numărul de pagini care au fost paginate (de pe disc).
Numărul de pagini swap care au fost introduse și scoase.
Această linie arată numărul de întreruperi deservite de la pornire, pentru fiecare dintre întreruperile posibile ale sistemului. Prima coloană este totalul tuturor întreruperilor deservite, inclusiv întreruperile nenumerotate specifice arhitecturii; fiecare coloană următoare este totalul pentru întreruperea numerotată respectivă. Întreruperile nenumerotate nu sunt afișate, ci doar însumate în total.
(major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
(doar Linux 2.4)
Numărul de schimbări de context la care a fost supus sistemul.
timpul în funcțiune, în secunde de la Epoca, 01.01.1970 00:00:00 +0000 (UTC).
Numărul de bifurcări de la pornire.
Numărul de procese în stare executabilă; (începând cu Linux 2.5.45).
Numărul de procese blocate în așteptarea finalizării operațiilor de In/Ieș; (începând cu Linux 2.5.45).
Această linie afișează numărul de softirq pentru toate CPU-urile. Prima coloană este totalul tuturor softirq-urilor și fiecare coloană ulterioară este totalul pentru un anumit softirq; (începând cu Linux 2.6.31).
/proc/swaps
Zone de interschimb în uz A se vedea și swapon(8).
/proc/sys
Acest director (prezent începând cu Linux 1.3.57) conține o serie de fișiere și subdirectoare corespunzătoare variabilelor nucleului. Aceste variabile pot fi citite și, în unele cazuri, modificate folosind sistemul de fișiere /proc și apelul de sistem (depreciat) sysctl(2).
Șirurile de valori pot fi terminate fie prin „\0” or „\n”.
Valorile de numere întregi și lungi pot fi scrise fie în notație zecimală, fie în notație hexazecimală (de exemplu, 0x3FFF). Atunci când se scriu mai multe valori întregi sau lungi, acestea pot fi separate prin oricare dintre următoarele caractere de spațiu alb: „ \[u201D], „\t” sau „\n”. Utilizarea altor separatori conduce la eroarea EINVAL.
/proc/sys/abi/ (începând cu Linux 2.4.10)
Acest director poate conține fișiere cu informații binare despre aplicații. Consultați fișierul sursă al nucleului Linux Documentation/sysctl/abi.rst (sau Documentation/sysctl/abi.txt înainte de Linux 5.3) pentru mai multe informații.
/proc/sys/debug
Acest director poate fi gol.
/proc/sys/dev
Acest director conține informații specifice dispozitivului (de exemplu, dev/cdrom/info). Pe unele sisteme, acesta poate fi gol.
/proc/sys/fs
Acest director conține fișiere și subdirectoare pentru variabilele nucleului referitoare la sistemele de fișiere.
/proc/sys/fs/aio-max-nr și /proc/sys/fs/aio-nr (începând cu Linux 2.6.4)
aio-nr este suma totală a numărului de evenimente specificate de apelurile io_setup(2) pentru toate contextele AIO active în prezent. Dacă aio-nr atinge aio-max-nr, atunci io_setup(2) va eșua cu eroarea EAGAIN. Creșterea aio-max-nr nu duce la prealocarea sau redimensionarea niciunei structuri de date a nucleului.
/proc/sys/fs/binfmt_misc
Documentația pentru fișierele din acest director poate fi găsită în sursa nucleului Linux în fișierul Documentation/admin-guide/binfmt-misc.rst (sau în Documentation/binfmt_misc.txt pe nucleele mai vechi).
/proc/sys/fs/dentry-state (începând cu Linux 2.2)
Acest fișier conține informații despre starea cache-ului de directoare (dcache). Fișierul conține șase numere, nr_dentry, nr_unused, age_limit (vârsta în secunde), want_pages (pagini solicitate de sistem) și două valori fictive.
nr_dentry este numărul de dentries alocate (intrări dcache). Acest câmp este neutilizat în Linux 2.2.
nr_unused este numărul de dentries neutilizate.
age_limit este vârsta în secunde după care intrările dcache pot fi recuperate atunci când memoria este scurtă.
want_pages este diferită de zero atunci când nucleul a apelat shrink_dcache_pages() și dcache nu este încă curățat.
/proc/sys/fs/dir-notify-enable
Acest fișier poate fi utilizat pentru a dezactiva sau activa interfața dnotify descrisă în fcntl(2) la nivelul întregului sistem. O valoare de 0 în acest fișier dezactivează interfața, iar o valoare de 1 o activează.
/proc/sys/fs/dquot-max
Acest fișier arată numărul maxim de intrări ale cotelor de disc din memoria cache. Pe unele sisteme (2.4), acesta nu este prezent. Dacă numărul de intrări libere de cotă de disc în cache este foarte mic și aveți un număr impresionant de utilizatori simultani ai sistemului, este posibil să doriți să măriți limita.
/proc/sys/fs/dquot-nr
Acest fișier arată numărul de intrări de cote de disc alocate și numărul de intrări de cote de disc libere.
/proc/sys/fs/epoll (începând cu Linux 2.6.28)
Acest director conține fișierul max_user_watches, care poate fi utilizat pentru a limita cantitatea de memorie a nucleului consumată de interfața epoll. Pentru detalii suplimentare, consultați epoll(7).
/proc/sys/fs/file-max
Acest fișier definește o limită la nivel de sistem privind numărul de fișiere deschise pentru toate procesele. Apelurile sistemului care eșuează atunci când întâlnesc această limită eșuează cu eroarea ENFILE; (a se vedea, de asemenea, setrlimit(2), care poate fi utilizat de un proces pentru a stabili limita per-proces, RLIMIT_NOFILE, privind numărul de fișiere pe care le poate deschide). Dacă primiți multe mesaje de eroare în jurnalul nucleului despre epuizarea gestionarilor de fișiere (descrieri de fișiere deschise) (căutați „VFS: file-max limit <number> reached”), încercați să creșteți această valoare:

echo 100000 > /proc/sys/fs/file-max
    

Procesele privilegiate (CAP_SYS_ADMIN) pot trece peste limita file-max.
/proc/sys/fs/file-nr
Acest fișier (numai pentru citire) conține trei numere: numărul de gestionari de fișiere alocați (de exemplu, numărul de descrieri de fișiere deschise; a se vedea open(2)); numărul de gestionari de fișiere libere; și numărul maxim de gestionari de fișiere (de exemplu, aceeași valoare ca /proc/sys/fs/file-max). Dacă numărul de gestionari de fișiere alocați este aproape de maxim, ar trebui să luați în considerare creșterea maximului. Înainte de Linux 2.6, nucleul aloca gestionari de fișiere în mod dinamic, dar nu-i elibera din nou. În schimb, gestionarii de fișiere liberi erau păstrați într-o listă pentru realocare; valoarea „free file handles” indică dimensiunea acelei liste. Un număr mare de gestionari de fișiere libere indică faptul că în trecut a existat un vârf în utilizarea gestionarilor de fișiere deschise. Începând cu Linux 2.6, nucleul dezalocă(eliberează) gestionarii de fișiere eliberate, iar valoarea „free file handles” este întotdeauna zero.
/proc/sys/fs/inode-max (prezent doar până la Linux 2.2)
Acest fișier conține numărul maxim de noduri-i în memorie. Această valoare ar trebui să fie de 3-4 ori mai mare decât valoarea din file-max, deoarece stdin, stdout și soclurile de rețea au nevoie, de asemenea, de un nod-i pentru a le gestiona. Atunci când rămâneți în mod regulat fără noduri-i, trebuie să măriți această valoare.
Începând cu Linux 2.4, nu mai există o limită statică a numărului de noduri-i, iar acest fișier este eliminat.
/proc/sys/fs/inode-nr
Acest fișier conține primele două valori din inode-state.
/proc/sys/fs/inode-state
Acest fișier conține șapte numere: nr_inodes, nr_free_inodes, preshrink și patru valori fictive (întotdeauna zero).
nr_inodes reprezintă numărul de noduri-i pe care sistemul le-a alocat. nr_free_inodes reprezintă numărul de noduri-i libere.
preshrink este diferită de zero atunci când nr_inodes > inode-max și sistemul trebuie să reducă lista de noduri-i în loc să aloce mai multe; de la Linux 2.4, acest câmp este o valoare falsă (întotdeauna zero).
/proc/sys/fs/inotify (începând cu Linux 2.6.13)
Acest director conține fișierele max_queued_events, max_user_instances și max_user_watches, care pot fi utilizate pentru a limita cantitatea de memorie a nucleului consumată de interfața inotify. Pentru detalii suplimentare, consultați inotify(7).
/proc/sys/fs/lease-break-time
Acest fișier specifică perioada de grație pe care nucleul o acordă unui proces care deține un contract de închiriere a unui fișier (fcntl(2)) după ce a trimis un semnal procesului respectiv prin care îl informează că un alt proces așteaptă să deschidă fișierul. În cazul în care titularul închirierii nu elimină sau nu retrogradează închirierea în această perioadă de grație, nucleul întrerupe cu forța închirierea.
/proc/sys/fs/leases-enable
Acest fișier poate fi utilizat pentru a activa sau dezactiva închirierea fișierelor (fcntl(2)) la nivelul întregului sistem. Dacă acest fișier conține valoarea 0, închirierile sunt dezactivate. O valoare diferită de zero activează închirierile.
/proc/sys/fs/mount-max (începând cu Linux 4.9)
Valoarea din acest fișier specifică numărul maxim de montări care pot exista într-un spațiu de nume al montărilor. Valoarea implicită din acest fișier este 100 000.
/proc/sys/fs/mqueue (începând cu Linux 2.6.6)
Acest director conține fișierele msg_max, msgsize_max și queues_max, care controlează resursele utilizate de cozile de mesaje POSIX. Consultați mq_overview(7) pentru detalii.
/proc/sys/fs/nr_open (începând cu Linux 2.6.25)
Acest fișier impune un plafon pentru valoarea la care poate fi ridicată limita de resurse RLIMIT_NOFILE (a se vedea getrlimit(2)). Acest plafon este impus atât pentru procesele neprivilegiate, cât și pentru cele privilegiate. Valoarea implicită în acest fișier este 1048576. Înainte de Linux 2.6.25, plafonul pentru RLIMIT_NOFILE era codificat la aceeași valoare.
/proc/sys/fs/overflowgid și /proc/sys/fs/overflowuid
Aceste fișiere vă permit să modificați valoarea UID și GID fixe. Valoarea implicită este 65534. Unele sisteme de fișiere acceptă numai UID-uri și GID-uri pe 16 biți, deși în Linux UID-urile și GID-urile sunt pe 32 de biți. Atunci când unul dintre aceste sisteme de fișiere este montat cu scrierea activată, orice UID sau GID care ar depăși 65535 este convertit la valoarea de depășire înainte de a fi scris pe disc.
/proc/sys/fs/pipe-max-size (începând cu Linux 2.6.35)
A se vedea pipe(7).
/proc/sys/fs/pipe-user-pages-hard (începând cu Linux 4.5)
A se vedea pipe(7).
/proc/sys/fs/pipe-user-pages-soft (începând cu Linux 4.5)
A se vedea pipe(7).
/proc/sys/fs/protected_fifos (începând cu Linux 4.19)
Valoarea din acest fișier este/poate fi stabilită la una dintre următoarele valori:
0
Scrierea în FIFO-uri este nerestricționată.
1
Nu se permite O_CREAT open(2) pe FIFO-uri pe care apelantul nu le deține în directoare lipicioase cu acces de scriere la nivel global, cu excepția cazului în care FIFO-ul este deținut de proprietarul directorului.
2
Ca și pentru valoarea 1, dar restricția se aplică și directoarelor lipicioase cu acces de scriere pentru grup.
Intenția protecțiilor de mai sus este de a evita scrierile neintenționate într-o FIFO controlată de atacator atunci când un program se așteaptă să creeze un fișier obișnuit.
/proc/sys/fs/protected_hardlinks (începând cu Linux 3.6)
În cazul în care valoarea din acest fișier este 0, nu sunt impuse restricții privind crearea de legături permanente (acesta este comportamentul istoric înainte de Linux 3.6). Atunci când valoarea din acest fișier este 1, se poate crea o legătură dură către un fișier țintă numai dacă una dintre următoarele condiții este adevărată:
Procesul apelant are capacitatea CAP_FOWNER în spațiul său de nume al utilizatorului, iar UID-ul fișierului are o asociere în spațiul de nume.
UID-ul sistemului de fișiere al procesului care creează legătura corespunde proprietarului (UID) fișierului țintă (după cum se descrie în credentials(7), UID-ul sistemului de fișiere al unui proces este în mod normal același cu UID-ul său efectiv).
Toate condițiile următoare sunt adevărate:
ținta este un fișier obișnuit;
fișierul țintă nu are activat bitul de mod set-user-ID;
fișierul țintă nu are biții de mod set-group-ID și group-executable activați; și
apelantul are permisiunea de a citi și de a scrie în fișierul țintă (fie prin masca de permisiuni a fișierului, fie pentru că dispune de capacitățile corespunzătoare).
Valoarea implicită în acest fișier este 0. Stabilirea valorii la 1 previne o clasă veche de probleme de securitate cauzate de cursele de timp de verificare și de timp de utilizare bazate pe legături dure, observate cel mai frecvent în directoare de tip acces-global-de-scriere precum /tmp. Metoda obișnuită de exploatare a acestui defect constă în depășirea limitelor de privilegii atunci când se urmărește o anumită legătură dură (de exemplu, un proces root urmărește o legătură dură creată de un alt utilizator). În plus, pe sistemele fără partiții separate, acest lucru împiedică utilizatorii neautorizați să „fixeze” fișiere vulnerabile set-user-ID și set-group-ID împotriva actualizării de către administrator, sau să facă legături către fișiere speciale.
/proc/sys/fs/protected_regular (începând cu Linux 4.19)
Valoarea din acest fișier este/poate fi stabilită la una dintre următoarele valori:
0
Scrierea în fișiere obișnuite este nerestricționată.
1
Nu se permite O_CREAT open(2) pe fișiere obișnuite pe care apelantul nu le deține în directoare lipicioase cu acces de scriere global, cu excepția cazului în care fișierul obișnuit este deținut de proprietarul directorului.
2
Ca și pentru valoarea 1, dar restricția se aplică și directoarelor lipicioase cu acces de scriere pentru grup.
Intenția protecțiilor de mai sus este similară cu protected_fifos, dar permite unei aplicații să evite scrierea într-un fișier obișnuit controlat de atacator, atunci când aplicația se aștepta să creeze unul.
/proc/sys/fs/protected_symlinks (începând cu Linux 3.6)
Atunci când valoarea din acest fișier este 0, nu sunt impuse restricții privind urmărirea legăturilor simbolice (de exemplu, acesta este comportamentul istoric înainte de Linux 3.6). Atunci când valoarea din acest fișier este 1, legăturile simbolice sunt urmate numai în următoarele circumstanțe:
UID-ul sistemului de fișiere al procesului care urmează legătura corespunde proprietarului (UID) legăturii simbolice (după cum se descrie în credentials(7), UID-ul sistemului de fișiere al unui proces este în mod normal același cu UID-ul său efectiv);
legătura nu se află într-un director lipicios cu acces global de scriere; sau
legătura simbolică și directorul său părinte au același proprietar (UID)
Un apel de sistem care nu reușește să urmeze o legătură simbolică din cauza restricțiilor de mai sus returnează eroarea EACCES în errno.
Valoarea implicită în acest fișier este 0. Stabilirea valorii la 1 evită o clasă veche de probleme de securitate bazate pe curse de timp de verificare, timp de utilizare la accesarea legăturilor simbolice.
/proc/sys/fs/suid_dumpable (începând cu Linux 2.6.13)
Valoarea din acest fișier este atribuită fanionului „dumpable” al unui proces în circumstanțele descrise în prctl(2). De fapt, valoarea din acest fișier determină dacă sunt produse fișiere de descărcare a conținutului memoriei pentru set-user-ID sau pentru alte binare protejate/alterate. Activarea parametrului „dumpable” afectează, de asemenea, dreptul de proprietate asupra fișierelor din directorul /proc/pid al unui proces, astfel cum este descris mai sus.
Pot fi specificate trei valori întregi diferite:
0 (implicit)]
Acest lucru asigură comportamentul tradițional (înainte de Linux 2.6.13). Nu va fi produsă o descărcare a conținutului memoriei pentru un proces care și-a schimbat acreditările (apelând seteuid(2), setgid(2) sau similar, sau executând un program set-user-ID sau set-group-ID) sau al cărui binar nu are permisiunea de citire activată.
1 („debug”)
Toate procesele descarcă conținutul memoriei atunci când este posibil; (motivele pentru care un proces ar putea totuși să nu descarce conținutul memorie sunt descrise în core(5)). Descărcarea conținutului memoriei este deținută de ID-ul de utilizator al sistemului de fișiere al procesului de descărcare a datelor și nu se aplică nicio măsură de securitate. Acest mod este destinat numai situațiilor de depanare a sistemului: acest mod este nesigur deoarece permite utilizatorilor neprivilegiați să examineze conținutul memoriei proceselor privilegiate.
2 („suidsafe”)
Orice binar care, în mod normal, nu ar fi descărcat (a se vedea „0” de mai sus) este descărcat pentru a putea fi citit numai de către root. Acest lucru permite utilizatorului să elimine fișierul cu datele din memorie descărcate, dar nu să îl citească. Din motive de securitate, fișierele cu datele din memorie descărcate, în acest mod nu se vor suprascrie unul pe altul sau pe alte fișiere. Acest mod este adecvat atunci când administratorii încearcă să depaneze probleme într-un mediu normal.
În plus, începând cu Linux 3.6, /proc/sys/kernel/core_pattern trebuie să fie fie un nume de rută absolut, fie o comandă de tip conductă, după cum se specifică în core(5). Vor fi scrise avertismente în jurnalul nucleului dacă core_pattern nu respectă aceste reguli și nu va fi produsă nicio descărcare a conținutului memoriei.
Pentru detalii despre efectul activării parametrului „dumpable” al unui proces asupra verificării modului de acces ptrace, consultați ptrace(2).
/proc/sys/fs/super-max
Acest fișier controlează numărul maxim de super-blocuri și, prin urmare, numărul maxim de sisteme de fișiere montate pe care le poate avea nucleul. Trebuie să măriți doar super-max dacă trebuie să montați mai multe sisteme de fișiere decât vă permite valoarea curentă din super-max.
/proc/sys/fs/super-nr
Acest fișier conține numărul de sisteme de fișiere montate în prezent.
/proc/sys/kernel
Acest director conține fișiere care controlează o serie de parametri ai nucleului, așa cum sunt descriși mai jos.
/proc/sys/kernel/acct
Acest fișier conține trei numere: highwater, lowwater și frequency. Dacă este activată contabilizarea proceselor în stil BSD, aceste valori controlează comportamentul acesteia. Dacă spațiul liber pe sistemul de fișiere în care se află jurnalul scade sub procentul lowwater, contabilizarea se suspendă. Dacă spațiul liber depășește procentul highwater, contabilizarea se reia. frequency determină cât de des verifică nucleul cantitatea de spațiu liber (valoarea este în secunde). Valorile implicite sunt 4, 2 și 30. Adică, suspendă contabilizarea dacă 2% sau mai puțin spațiu este liber; o reia dacă 4% sau mai mult spațiu este liber; consideră informațiile despre cantitatea de spațiu liber valabile timp de 30 de secunde.
/proc/sys/kernel/auto_msgmni (de la Linux 2.6.27 la Linux 3.18)
De la Linux 2.6.27 la Linux 3.18, acest fișier a fost utilizat pentru a controla recalcularea valorii din /proc/sys/kernel/msgmni la adăugarea sau eliminarea de memorie sau la crearea/eliminarea spațiului de nume IPC. Transmiterea lui „1” în acest fișier activează recalcularea automată a msgmni (și declanșează o recalculare a msgmni pe baza cantității actuale de memorie disponibilă și a numărului de spații de nume IPC). Ecoul „0” dezactivează recalcularea automată; (recalcularea automată a fost, de asemenea, dezactivată dacă o valoare a fost atribuită în mod explicit lui /proc/sys/kernel/msgmni). Valoarea implicită în auto_msgmni era 1.
Începând cu Linux 3.19, conținutul acestui fișier nu are niciun efect (deoarece msgmni are ca valoare implicită aproape valoarea maximă posibilă), iar citirile din acest fișier returnează întotdeauna valoarea „0”.
/proc/sys/kernel/cap_last_cap (începând cu Linux 3.2)
A se vedea capabilities(7).
/proc/sys/kernel/cap-bound (de la Linux 2.2 la Linux 2.6.24)
Acest fișier conține valoarea nucleului capability bounding set (exprimată ca număr zecimal cu semn). Acest set este comparat prin operatorul AND logic cu capacitățile permise unui proces în timpul execve(2). Începând cu Linux 2.6.25, setul de delimitare a capacităților la nivel de sistem a dispărut și a fost înlocuit de un set de delimitare per-fir; consultați capabilities(7).
/proc/sys/kernel/core_pattern
A se vedea core(5).
/proc/sys/kernel/core_pipe_limit
A se vedea core(5).
/proc/sys/kernel/core_uses_pid
A se vedea core(5).
/proc/sys/kernel/ctrl-alt-del
Acest fișier controlează gestionarea comenzii Ctrl-Alt-Del de la tastatură. Când valoarea din acest fișier este 0, Ctrl-Alt-Del este capturat și trimis către programul init(1) pentru a gestiona o repornire elegantă. Atunci când valoarea este mai mare decât zero, reacția Linux la un Vulcan Nerve Pinch (tm) va fi o repornire imediată, fără a sincroniza măcar tampoanele murdare. Notă: atunci când un program (cum ar fi dosemu) are tastatura în modul „raw”, semnalul Ctrl-Alt-Del este interceptat de program înainte de a ajunge la stratul tty al nucleului și depinde de program să decidă ce să facă cu el.
/proc/sys/kernel/dmesg_restrict (începând cu Linux 2.6.37)
Valoarea din acest fișier determină cine poate vedea conținutul syslog al nucleului. O valoare de 0 în acest fișier nu impune nicio restricție. Dacă valoarea este 1, numai utilizatorii privilegiați pot citi syslog-ul nucleului. Consultați syslog(2) pentru mai multe detalii. Începând cu Linux 3.4, numai utilizatorii cu capacitatea CAP_SYS_ADMIN pot modifica valoarea din acest fișier.
/proc/sys/kernel/domainname și /proc/sys/kernel/hostname
poate fi utilizat pentru a defini numele de domeniu NIS/YP și numele de gazdă al mașinii dvs. exact în același mod ca comenzile domainname(1) și hostname(1), adică:

# echo 'darkstar' > /proc/sys/kernel/hostname
# echo 'mydomain' > /proc/sys/kernel/domainname
    

are același efect ca și

# hostname 'darkstar'
# domainname 'mydomain'
    

Rețineți, totuși, că darkstar.frop.org clasic are numele de gazdă „darkstar” și numele de domeniu DNS (Internet Domain Name Server) „frop.org”, care nu trebuie confundat cu numele de domeniu NIS (Network Information Service) sau YP (Yellow Pages). Aceste două nume de domenii sunt în general diferite. Pentru o discuție detaliată, consultați pagina de manual hostname(1).
/proc/sys/kernel/hotplug
Acest fișier conține numele rutei pentru agentul de politică Hotplug. Valoarea implicită din acest fișier este /sbin/hotplug.
/proc/sys/kernel/htab-reclaim (înainte de Linux 2.4.9.2)
(Numai PowerPC) Dacă acest fișier este definit la o valoare diferită de zero, htab PowerPC (a se vedea fișierul nucleului Documentation/powerpc/ppc_htab.txt) este eliminat de fiecare dată când sistemul intră în bucla de inactivitate.
/proc/sys/kernel/keys/*
Acest director conține diverse fișiere care definesc parametrii și limitele pentru facilitatea de gestionare a cheilor. Aceste fișiere sunt descrise în keyrings(7).
/proc/sys/kernel/kptr_restrict (începând cu Linux 2.6.38)
Valoarea din acest fișier determină dacă adresele nucleului sunt expuse prin intermediul fișierelor /proc și al altor interfețe. O valoare de 0 în acest fișier nu impune nicio restricție. Dacă valoarea este 1, indicatorii de nucleu afișați folosind specificatorul de format %pK vor fi înlocuiți cu zerouri, cu excepția cazului în care utilizatorul are capacitatea CAP_SYSLOG. Dacă valoarea este 2, indicatorii de nucleu afișați utilizând specificatorul de format %pK vor fi înlocuiți cu zerouri indiferent de capacitățile utilizatorului. Valoarea implicită inițială pentru acest fișier a fost 1, dar valoarea implicită a fost schimbată la 0 în Linux 2.6.39. Începând cu Linux 3.4, numai utilizatorii cu capacitatea CAP_SYS_ADMIN pot modifica valoarea din acest fișier.
/proc/sys/kernel/l2cr
(Numai PowerPC) Acest fișier conține un indicator care controlează memoria cache L2 a plăcilor cu procesor G3. Dacă este 0, memoria cache este dezactivată. Activată dacă nu este zero.
/proc/sys/kernel/modprobe
Acest fișier conține numele rutei pentru încărcătorul de module al nucleului. Valoarea implicită este /sbin/modprobe. Fișierul este prezent numai dacă nucleul este construit cu opțiunea CONFIG_MODULES (CONFIG_KMOD în Linux 2.6.26 și anterioare) activată. Acesta este descris de fișierul sursă al nucleului Linux Documentation/kmod.txt (prezent numai în Linux 2.4 și versiunile anterioare).
/proc/sys/kernel/modules_disabled (începând cu Linux 2.6.31)
O valoare de comutare care indică dacă modulele pot fi încărcate într-un nucleu modular. Valoarea implicită a acestei opțiuni este „off” (0), dar poate fi definită la „true” (1). Odată ce este definită ca „true”, modulele nu pot fi nici încărcate, nici descărcate, iar opțiunea nu poate fi redefinită la „false”. Fișierul este prezent numai dacă nucleul este construit cu opțiunea CONFIG_MODULES activată.
/proc/sys/kernel/msgmax (începând cu Linux 2.2)
Acest fișier definește o limită la nivelul întregului sistem, specificând numărul maxim de octeți dintr-un singur mesaj scris pe o coadă de mesaje System V.
/proc/sys/kernel/msgmni (începând cu Linux 2.4)
Acest fișier definește limita la nivel de sistem a numărului de identificatori ai cozii de mesaje. A se vedea și /proc/sys/kernel/auto_msgmni.
/proc/sys/kernel/msgmnb (începând cu Linux 2.2)
Acest fișier definește un parametru la nivelul întregului sistem utilizat pentru a inițializa valoarea msg_qbytes pentru cozile de mesaje create ulterior. Valoarea msg_qbytes specifică numărul maxim de octeți care pot fi scriși în coada de mesaje.
/proc/sys/kernel/ngroups_max (începând cu Linux 2.6.4)
Acesta este un fișier numai-pentru-citire care afișează limita superioară a numărului de membri ai grupului unui proces.
/proc/sys/kernel/ns_last_pid (începând cu Linux 3.3)
A se vedea pid_namespaces(7).
/proc/sys/kernel/ostype și /proc/sys/kernel/osrelease
Aceste fișiere oferă subșiruri ale /proc/version.
/proc/sys/kernel/overflowgid și /proc/sys/kernel/overflowuid
Aceste fișiere dublează fișierele /proc/sys/fs/overflowgid și /proc/sys/fs/overflowuid.
/proc/sys/kernel/panic
Acest fișier oferă acces de citire/scriere la variabila nucleului panic_timeout. Dacă aceasta este zero, nucleul va intra în buclă în caz de panică; dacă este diferită de zero, aceasta indică faptul că nucleul ar trebui să repornească automat după acest număr de secunde. Atunci când utilizați controlorul de dispozitiv watchdog software, valoarea recomandată este 60.
/proc/sys/kernel/panic_on_oops (începând cu Linux 2.5.68)
Acest fișier controlează comportamentul nucleului atunci când este întâlnit un „oops” (o eroare gravă, dar care nu este fatală) sau o EROARE. Dacă acest fișier conține 0, atunci sistemul încearcă să continue funcționarea. În cazul în care conține 1, sistemul întârzie câteva secunde (pentru a-i da timp lui klogd să înregistreze rezultatul „oops”) și apoi intră în panică. Dacă fișierul /proc/sys/kernel/panic este, de asemenea, diferit de zero, atunci mașina va fi repornită.
/proc/sys/kernel/pid_max (începând cu Linux 2.5.34)
Acest fișier specifică valoarea la care se va relua numerotarea PID-urilor la valorile lor inițiale (de exemplu, valoarea din acest fișier este cu una mai mare decât PID-ul maxim). PID mai mari decât această valoare nu sunt alocate; astfel, valoarea din acest fișier acționează și ca o limită la nivel de sistem pentru numărul total de procese și fire de execuție. Valoarea implicită pentru acest fișier, 32768, are ca rezultat aceeași gamă de PID-uri ca pe nucleele anterioare. Pe platformele pe 32 de biți, 32768 este valoarea maximă pentru pid_max. Pe sistemele pe 64 de biți, pid_max poate fi stabilită la orice valoare până la 2^22 (PID_MAX_LIMIT, aproximativ 4 milioane).
/proc/sys/kernel/powersave-nap (doar PowerPC)
Acest fișier conține un fanion. Dacă este activat, Linux-PPC va utiliza modul „nap” de economisire a energiei, altfel va fi utilizat modul „doze”.
/proc/sys/kernel/printk
A se vedea syslog(2).
/proc/sys/kernel/pty (since Linux 2.6.4)
Acest director conține două fișiere referitoare la numărul de pseudoterminale UNIX 98 ( a se vedea pts(4)) de pe sistem.
/proc/sys/kernel/pty/max
Acest fișier definește numărul maxim de pseudoterminale.
/proc/sys/kernel/pty/nr
Acest fișier numai-pentru-citire indică câte pseudoterminale sunt utilizate în prezent.
/proc/sys/kernel/random
Acest director conține diverși parametri care controlează funcționarea fișierului /dev/random. Consultați random(4) pentru informații suplimentare.
/proc/sys/kernel/random/uuid (începând cu Linux 2.4)
Fiecare citire din acest fișier numai-pentru-citire returnează un UUID pe 128 de biți generat aleatoriu, ca șir de caractere în formatul UUID standard.
/proc/sys/kernel/randomize_va_space (începând cu Linux 2.6.12)
Selectează politica de distribuție aleatorie a spațiului de adrese („address space layout randomization”: ASLR) pentru sistem (pe arhitecturi care acceptă ASLR). Sunt acceptate trei valori pentru acest fișier:
0
Dezactivează ASLR. Acesta este parametrul implicit pentru arhitecturile care nu acceptă ASLR și atunci când nucleul este inițializat cu parametrul norandmaps.
1
Face ca adresele alocărilor mmap(2), stiva și pagina VDSO să fie stabilite aleatoriu. Printre altele, aceasta înseamnă că bibliotecile partajate vor fi încărcate la adrese aleatorii. Segmentul de text al binarelor legate de PIE va fi, de asemenea, încărcat la o adresă aleatorie. Această valoare este cea implicită dacă nucleul a fost configurat cu CONFIG_COMPAT_BRK.
2
( Începând cu Linux 2.6.25) De asemenea, acceptă repartizarea aleatorie a grămezii (heap randomization). Această valoare este cea implicită dacă nucleul nu a fost configurat cu CONFIG_COMPAT_BRK.
/proc/sys/kernel/real-root-dev
Acest fișier este documentat în fișierul sursă al nucleului Linux Documentation/admin-guide/initrd.rst (sau Documentation/initrd.txt înainte de Linux 4.10).
/proc/sys/kernel/reboot-cmd (doar Sparc)
Acest fișier pare a fi o modalitate de a oferi un argument încărcătorului de pornire SPARC ROM/Flash. Poate pentru a-i spune ce să facă după repornire?
/proc/sys/kernel/rtsig-max
(Până la și inclusiv Linux 2.6.7; a se vedea setrlimit(2)) Acest fișier poate fi utilizat pentru a regla numărul maxim de semnale POSIX în timp real (în coadă) care pot fi restante în sistem.
/proc/sys/kernel/rtsig-nr
(Până la și inclusiv Linux 2.6.7.) Acest fișier arată numărul de semnale POSIX în timp real aflate în coadă.
/proc/pid/sched_autogroup_enabled (începând cu Linux 2.6.38)
A se vedea sched(7).
/proc/sys/kernel/sched_child_runs_first (începând cu Linux 2.6.23)
Dacă acest fișier conține valoarea zero, atunci, după un fork(2), părintele este programat primul pe CPU. Dacă fișierul conține o valoare diferită de zero, atunci copilul este programat primul pe CPU (computerul central); (desigur, pe un sistem multiprocesor, atât părintele, cât și copilul ar putea fi programați imediat pe un CPU).
/proc/sys/kernel/sched_rr_timeslice_ms (începând cu Linux 3.9)
A se vedea sched_rr_get_interval(2).
/proc/sys/kernel/sched_rt_period_us (începând cu Linux 2.6.25)
A se vedea sched(7).
/proc/sys/kernel/sched_rt_runtime_us (începând cu Linux 2.6.25)
A se vedea sched(7).
/proc/sys/kernel/seccomp ( începând cu Linux 4.14)
Acest director oferă informații și configurații seccomp suplimentare. Consultați seccomp(2) pentru detalii suplimentare.
/proc/sys/kernel/sem (începând cu Linux 2.4)
Acest fișier conține 4 numere care definesc limitele pentru semafoarele IPC System V. Aceste câmpuri sunt, în ordine:
Numărul maxim de semafoare pe set de semafoare.
Limita la nivel de sistem a numărului de semafoare din toate seturile de semafoare.
Numărul maxim de operații care pot fi specificate într-un apel semop(2).
Limita la nivel de sistem a numărului maxim de identificatori de semafoare.
/proc/sys/kernel/sg-big-buff
Acest fișier arată dimensiunea tamponului generic al dispozitivului SCSI (sg). Nu o puteți regla încă, dar o puteți modifica la momentul compilării editând include/scsi/sg.h și modificând valoarea lui SG_BIG_BUFF. Cu toate acestea, nu ar trebui să existe niciun motiv pentru a schimba această valoare.
/proc/sys/kernel/shm_rmid_forced (începând cu Linux 3.1)
Dacă acest fișier este stabilit la 1, toate segmentele de memorie partajată System V vor fi marcate pentru distrugere de îndată ce numărul de procese atașate scade la zero; cu alte cuvinte, nu mai este posibilă crearea de segmente de memorie partajată care există independent de orice proces atașat.
Efectul este ca și cum un shmctl(2) IPC_RMID este efectuat pe toate segmentele existente, precum și pe toate segmentele create în viitor (până când acest fișier este reinițializat la 0). Rețineți că segmentele existente care nu sunt atașate niciunui proces vor fi imediat distruse atunci când acest fișier este stabilit la 1. Stabilirea acestei opțiuni va distruge, de asemenea, segmentele care au fost create, dar niciodată atașate, la terminarea procesului care a creat segmentul cu shmget(2).
Stabilirea acestui fișier la 1 oferă o modalitate de a se asigura că toate segmentele de memorie partajată System V sunt luate în considerare la utilizarea resurselor și la limitele de resurse (a se vedea descrierea RLIMIT_AS în getrlimit(2)) a cel puțin unui proces.
Deoarece stabilirea acestui fișier la 1 produce un comportament care nu este standard și ar putea, de asemenea, rupe aplicațiile existente, valoarea implicită în acest fișier este 0. Stabiliți acest fișier la 1 numai dacă aveți o bună înțelegere a semanticii aplicațiilor care utilizează memoria partajată System V pe sistemul dumneavoastră.
/proc/sys/kernel/shmall (începând cu Linux 2.2)
Acest fișier conține limita la nivelul întregului sistem pentru numărul total de pagini din memoria partajată System V.
/proc/sys/kernel/shmmax (începând cu Linux 2.2)
Acest fișier poate fi utilizat pentru a interoga și a stabili limita de timp de execuție privind dimensiunea maximă (System V IPC) a segmentului de memorie partajată care poate fi creat. Segmentele de memorie partajată de până la 1 Go sunt acum acceptate în nucleu. Această valoare implicită este SHMMAX.
/proc/sys/kernel/shmmni (începând cu Linux 2.4)
Acest fișier specifică numărul maxim la nivel de sistem de segmente de memorie partajată System V care pot fi create.
/proc/sys/kernel/sysctl_writes_strict (începând cu Linux 3.16)
Valoarea din acest fișier determină modul în care decalajul (offset-ul) fișierului afectează comportamentul actualizării intrărilor în fișierele din /proc/sys. Fișierul are trei valori posibile:
-1
Aceasta oferă o gestionare tradițională, fără avertismente printk. Fiecare write(2) trebuie să conțină integral valoarea care urmează să fie scrisă, iar scrierile multiple pe același descriptor de fișier vor suprascrie întreaga valoare, indiferent de poziția în fișier.
0
(implicit) Aceasta oferă același comportament ca și pentru -1, dar sunt scrise avertismente printk pentru procesele care efectuează scrieri atunci când decalajul fișierului nu este 0.
1
Respectă decalajul (offset-ul) fișierului atunci când scrie șiruri de caractere în fișiere /proc/sys. Scrierile multiple vor adăuga la memoria tampon de valori. Orice lucru scris dincolo de lungimea maximă a memoriei tampon de valori va fi ignorat. Scrierile în intrările numerice /proc/sys trebuie să se facă întotdeauna la decalajul de fișier 0, iar valoarea trebuie să fie conținută în întregime în memoria tampon furnizată la write(2).
/proc/sys/kernel/sysrq
Acest fișier controlează funcțiile care pot fi invocate de cheia SysRq. În mod implicit, fișierul conține 1, ceea ce înseamnă că orice solicitare Posibilă SysRq este permisă (în versiunile mai vechi ale nucleului, SysRq era dezactivată în mod implicit și trebuia să o activați în mod specific în timpul execuției, dar acest lucru nu mai este cazul). Valorile posibile în acest fișier sunt:
0
Dezactivează complet sysrq
1
Activează toate funcțiile sysrq
> 1
Mască de biți a funcțiilor sysrq permise, după cum urmează:
  2
Activează controlul nivelului de jurnalizare a consolei
  4
Activează controlul tastaturii (SAK, unraw)
  8
Activează descărcări ale conținutului memoriei pentru depanarea proceselor etc.
 16
Activează comanda «sync»
 32
Activează remontarea numai-pentru-citire
 64
Activează semnalizarea proceselor (term, kill, oom-kill)
128
Permite repornirea/oprirea
256
Permite reglarea valorii „nice” a tuturor sarcinilor în timp real
Acest fișier este prezent numai dacă opțiunea de configurare a nucleului CONFIG_MAGIC_SYSRQ este activată. Pentru detalii suplimentare, consultați fișierul sursă al nucleului Linux Documentation/admin-guide/sysrq.rst (sau Documentation/sysrq.txt înainte de Linux 4.10).
/proc/sys/kernel/version
Acest fișier conține un șir precum:

#5 miercuri 25 februarie 21:49:24 MET 1998
    

„#5” înseamnă că acesta este al cincilea nucleu construit din această sursă de bază, iar data care îl urmează indică ora la care a fost construit nucleul.
/proc/sys/kernel/threads-max (începând cu Linux 2.3.11)
Acest fișier specifică limita la nivelul întregului sistem pentru numărul de fire de execuție (sarcini) care pot fi create pe sistem.
Începând cu Linux 4.1, valoarea care poate fi scrisă la threads-max este limitată. Valoarea minimă care poate fi scrisă este 20. Valoarea maximă care poate fi scrisă este dată de constanta FUTEX_TID_MASK (0x3fffffff). Dacă se scrie în threads-max o valoare în afara acestui interval, apare eroarea EINVAL.
Valoarea scrisă este verificată în raport cu paginile RAM disponibile. În cazul în care structurile thread ar ocupa prea mult (mai mult de 1/8) din paginile RAM disponibile, valoarea threads-max este redusă în consecință.
/proc/sys/kernel/yama/ptrace_scope (începând cu Linux 3.5)
A se vedea ptrace(2).
/proc/sys/kernel/zero-paged (doar PowerPC)
Acest fișier conține un fanion. Atunci când este activat (nonzero), Linux-PPC va elimina preventiv paginile din bucla de inactivitate, accelerând posibil get_free_pages.
/proc/sys/net
Acest director conține informații despre rețele. Explicații pentru unele dintre fișierele din acest director pot fi găsite în tcp(7) și ip(7).
/proc/sys/net/core/bpf_jit_enable
A se vedea bpf(2).
/proc/sys/net/core/somaxconn
Acest fișier definește o valoare maximă pentru argumentul backlog din listen(2); consultați pagina de manual listen(2) pentru detalii.
/proc/sys/proc
Acest director poate fi gol.
/proc/sys/sunrpc
Acest director acceptă apelul de procedură la distanță Sun pentru sistemul de fișiere de rețea (NFS). Pe unele sisteme, acesta nu este prezent.
/proc/sys/user (începând cu Linux 4.9)
A se vedea namespaces(7).
/proc/sys/vm
Acest director conține fișiere pentru ajustarea gestionării memoriei, tampon(buffer) și zona de prestocare(cache).
/proc/sys/vm/admin_reserve_kbytes (începând cu Linux 3.10)
Acest fișier definește cantitatea de memorie liberă (în Kio) din sistem care ar trebui rezervată pentru utilizatorii cu capacitatea CAP_SYS_ADMIN.
Valoarea implicită din acest fișier este minimul de [3% din paginile libere, 8Mio] exprimat în Kio. Valoarea implicită este menită să ofere suficient pentru ca superutilizatorul să se conecteze și să oprească un proces, dacă este necesar, în modul implicit „guess” de alocare în plus de memorie („overcommit”, adică 0 în /proc/sys/vm/overcommit_memory).
Sistemele care rulează în modul „overcommit never” (adică 2 în /proc/sys/vm/overcommit_memory) ar trebui să crească valoarea din acest fișier pentru a ține seama de dimensiunea completă a memoriei virtuale a programelor utilizate pentru recuperare (de exemplu, login(1) ssh(1) și top(1)) În caz contrar, este posibil ca superutilizatorul să nu se poată conecta pentru a recupera sistemul. De exemplu, pe x86-64, o valoare adecvată este 131072 (128Mio rezervat).
Modificarea valorii din acest fișier intră în vigoare ori de câte ori o aplicație solicită memorie.
/proc/sys/vm/compact_memory (începând cu Linux 2.6.35)
Atunci când se scrie 1 în acest fișier, toate zonele sunt compactate astfel încât memoria liberă să fie disponibilă în blocuri contigue, acolo unde este posibil. Efectul acestei acțiuni poate fi observat examinând /proc/buddyinfo.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_COMPACTION activată.
/proc/sys/vm/drop_caches (începând cu Linux 2.6.16)
Scrierea în acest fișier determină nucleul să elimine din memorie cache-urile, intrările de director și nodurile-i curate, făcând ca memoria respectivă să devină liberă. Acest lucru poate fi util pentru testarea gestionării memoriei și pentru efectuarea de teste de performanță reproductibile pentru sistemul de fișiere. Deoarece scrierea în acest fișier duce la pierderea beneficiilor memorării în cache, aceasta poate degrada performanța generală a sistemului.
Pentru a elibera memoria cache de pagini, utilizați:

echo 1 > /proc/sys/vm/drop_caches
    

Pentru a elibera intrările de director și nodurile-i, utilizați:

echo 2 > /proc/sys/vm/drop_caches
    

Pentru a elibera memoria cache de pagini, intrările de director și nodurile-i, utilizați:

echo 3 > /proc/sys/vm/drop_caches
    

Deoarece scrierea în acest fișier este o operațiune nedistructivă, iar obiectele modificate (murdare) nu pot fi eliberate, utilizatorul ar trebui să execute mai întâi sync(1).
/proc/sys/vm/sysctl_hugetlb_shm_group (începând cu Linux 2.6.7)
Acest fișier inscriptibil conține un ID de grup care are permisiunea de a aloca memorie utilizând pagini imense. Dacă un proces are un ID de grup al sistemului de fișiere sau orice ID de grup suplimentar care corespunde acestui ID de grup, atunci acesta poate face alocări de pagini imense fără a deține capacitatea CAP_IPC_LOCK; consultați memfd_create(2), mmap(2) și shmget(2).
/proc/sys/vm/legacy_va_layout (începând cu Linux 2.6.9)
Dacă nu este zero, aceasta dezactivează noua structură de alocare a memoriei pe 32 de biți; nucleul va utiliza structura tradițională (2.4) pentru toate procesele.
/proc/sys/vm/memory_failure_early_kill (începând cu Linux 2.6.32)
Controlează modul de oprire a proceselor atunci când o eroare de memorie necorectată (de obicei o eroare de 2 biți într-un modul de memorie) care nu poate fi gestionată de nucleu este detectată în fundal de hardware. În unele cazuri (cum ar fi pagina care are încă o copie valabilă pe disc), nucleul va gestiona defecțiunea în mod transparent, fără a afecta nicio aplicație. Dar, dacă nu există nicio altă copie actualizată a datelor, acesta va opri procesele pentru a preveni propagarea oricărei corupții a datelor.
Fișierul are una dintre următoarele valori:
1
Omoară toate procesele care au asociată pagina coruptă și care nu poate fi reîncărcată imediat ce este detectată corupția. Rețineți că acest lucru nu este acceptat pentru câteva tipuri de pagini, cum ar fi datele alocate intern nucleului sau cache-ul de swap, dar funcționează pentru majoritatea paginilor de utilizator.
0
Anulează asocierea paginii corupte cu toate procesele (cu care era asociată) și omoară un proces numai dacă acesta încearcă să acceseze pagina.
Omorârea este efectuată utilizând un semnal SIGBUS cu si_code definit la BUS_MCEERR_AO. Procesele pot gestiona acest lucru dacă doresc; consultați sigaction(2) pentru mai multe detalii.
Această caracteristică este activă numai pe arhitecturi/platforme cu gestionare avansată a verificării mașinii și depinde de capacitățile hardware.
Aplicațiile pot schimba individual configurarea memory_failure_early_kill cu operația prctl(2) PR_MCE_KILL.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_MEMORY_FAILURE activată.
/proc/sys/vm/memory_failure_recovery (începând cu Linux 2.6.32)
Activează recuperarea în caz de eroare a memoriei (atunci când este acceptată de platformă).
1
Încearcă recuperarea.
0
Declanșează întotdeauna o panică a nucleului în cazul unei erori de memorie.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_MEMORY_FAILURE activată.
/proc/sys/vm/oom_dump_tasks (începând cu Linux 2.6.25)
Activează producerea unei imagini a sarcinilor la nivelul întregului sistem (cu excepția firelor nucleului) atunci când nucleul efectuează o operație „OOM-killing” (omorâre datorită supraîncărcării memoriei. Imaginea include următoarele informații pentru fiecare sarcină (fir, proces): ID fir, ID utilizator real, ID grup de fire (ID proces), dimensiunea memoriei virtuale, dimensiunea setului rezident, CPU-ul pe care este programată sarcina, scorul oom_adj (a se vedea descrierea /proc/pid/oom_adj) și numele comenzii. Acest lucru este util pentru a determina de ce a fost invocată funcția OOM-killer și pentru a identifica sarcina defectuoasă care a cauzat-o.
Dacă conține valoarea zero, această informație este suprimată. Pe sistemele foarte mari cu mii de sarcini, este posibil să nu fie fezabil să se creeze imaginea cu informațiile privind starea memoriei pentru fiecare dintre acestea. Astfel de sisteme nu ar trebui să fie forțate să suporte o penalizare a performanței în situații OOM în care informațiile nu sunt dorite.
Dacă este stabilită la diferit de zero, această informație este afișată ori de câte ori OOM-killer omoară efectiv o sarcină care consumă multă memorie.
Valoarea implicită este 0.
/proc/sys/vm/oom_kill_allocating_task (începând cu Linux 2.6.24)
Aceasta activează sau dezactivează omorârea sarcinii care declanșează OOM-killer în situații de lipsă de memorie.
Dacă este stabilită la zero, OOM-killer va scana întreaga listă de sarcini și va selecta o sarcină pe bază euristică pentru a o omorî. Aceasta selectează în mod normal o sarcină defectuoasă care consumă multă memorie și care eliberează o cantitate mare de memorie atunci când este eliminată.
Dacă această valoare este diferită de zero, OOM-killer omoară pur și simplu sarcina care a declanșat condiția de depășire a memoriei. Acest lucru evită o scanare a listei de sarcini, posibil costisitoare.
Dacă valoarea lui /proc/sys/vm/panic_on_oom este diferită de zero, aceasta are prioritate față de orice valoare utilizată în /proc/sys/vm/oom_kill_allocating_task.
Valoarea implicită este 0.
/proc/sys/vm/overcommit_kbytes (începând cu Linux 3.14)
Acest fișier inscriptibil oferă o alternativă la /proc/sys/vm/overcommit_ratio pentru controlul CommitLimit atunci când /proc/sys/vm/overcommit_memory are valoarea 2. Acest lucru permite specificarea cantității de memorie suprasolicitată ca valoare absolută (în ko), și nu ca procent, așa cum se face cu overcommit_ratio. Acest lucru permite un control mai fin al CommitLimit pe sistemele cu dimensiuni de memorie extrem de mari.
Numai unul dintre overcommit_kbytes sau overcommit_ratio poate avea un efect: dacă overcommit_kbytes are o valoare diferită de zero, atunci este utilizat pentru a calcula CommitLimit, în caz contrar este utilizat overcommit_ratio. Scrierea unei valori în oricare dintre aceste fișiere face ca valoarea din celălalt fișier să fie pusă la zero.
/proc/sys/vm/overcommit_memory
Acest fișier conține modul de contabilizare a memoriei virtuale a nucleului. Valorile sunt:
0: supra-rezervare „overcommit” euristică (aceasta este valoarea implicită)
1: întotdeauna supra-rezervare, nu verifică niciodată
2: verifică întotdeauna, niciodată supra-rezervare
În modul 0, apelurile mmap(2) cu MAP_NORESERVE nu sunt verificate, iar verificarea implicită este foarte slabă, ceea ce conduce la riscul de a obține un proces „OOM-killed”.
În modul 1, nucleul pretinde că există întotdeauna suficientă memorie, până când memoria se epuizează. Un caz de utilizare pentru acest mod este reprezentat de aplicațiile de calcul științific care utilizează matrici disperse mari. Înainte de Linux 2.6.0, orice valoare diferită de zero implica modul 1.
În modul 2 (disponibil începând cu Linux 2.6), spațiul total de adrese virtuale care poate fi alocat (CommitLimit în /proc/meminfo) se calculează astfel

CommitLimit = (total_RAM - total_huge_TLB) *
	      overcommit_ratio / 100 + total_swap
    

unde:
total_RAM este cantitatea totală de RAM din sistem;
total_huge_TLB este cantitatea de memorie pusă deoparte pentru paginile imense;
overcommit_ratio este valoarea din /proc/sys/vm/overcommit_ratio; și
total_swap este cantitatea de spațiu de interschimb (swap).
De exemplu, într-un sistem cu 16 Go de RAM fizică, 16 Go de spațiu interschimb, niciun spațiu dedicat paginilor imense și un overcommit_ratio de 50, această formulă generează un CommitLimit de 24 Go.
Începând cu Linux 3.14, dacă valoarea din /proc/sys/vm/overcommit_kbytes este diferită de zero, atunci CommitLimit este calculată ca:

CommitLimit = overcommit_kbytes + total_swap
    

A se vedea, de asemenea, descrierea lui /proc/sys/vm/admin_reserve_kbytes și /proc/sys/vm/user_reserve_kbytes.
/proc/sys/vm/overcommit_ratio (începând cu Linux 2.6.0)
Acest fișier inscriptibil definește un procent cu care memoria poate fi supra-rezervată. Valoarea implicită din fișier este 50. Consultați descrierea /proc/sys/vm/overcommit_memory.
/proc/sys/vm/panic_on_oom (începând cu Linux 2.6.18)
Aceasta activează sau dezactivează o intrare în panică a nucleului într-o situație de lipsă a memoriei.
Dacă valoarea din acest fișier este stabilită la 0, OOM-killer-ul nucleului va omorî un proces defectuos. De obicei, OOM-killer este capabil să omoare un proces defectuos și sistemul va supraviețui.
Dacă valoarea din acest fișier este stabilită la 1, atunci nucleul intră în mod normal în panică atunci când se produce o depășire a memoriei. Cu toate acestea, dacă un proces limitează alocările la anumite noduri utilizând politici de memorie (mbind(2) MPOL_BIND) sau cpuset-uri (cpuset(7)) și aceste noduri ating starea de epuizare a memoriei, un proces poate fi omorât de OOM-killer. În acest caz nu se produce intrarea în panică: deoarece memoria altor noduri poate fi liberă, aceasta înseamnă că este posibil ca sistemul în ansamblu să nu fi ajuns încă într-o situație de epuizare a memoriei.
Dacă valoarea din acest fișier este stabilită la 2, nucleul intră întotdeauna în panică atunci când apare o condiție de epuizre a memoriei.
Valoarea implicită este 0. 1 și 2 sunt pentru protecția împotriva cazurilor de grupare a erorilor. Selectați oricare dintre acestea în funcție de politica de protecție în caz de eroare.
/proc/sys/vm/swappiness
Valoarea din acest fișier controlează agresivitatea cu care nucleul va schimba paginile de memorie. Valorile mai mari cresc agresivitatea, iar valorile mai mici scad agresivitatea. Valoarea implicită este 60.
/proc/sys/vm/user_reserve_kbytes (începând cu Linux 3.10)
Specifică o cantitate de memorie (în Kio) care să fie rezervată pentru procesele de utilizator. Acest lucru este menit să împiedice un utilizator să pornească un singur proces care consumă multă memorie, astfel încât să nu poată recupera (kill the hog). Valoarea din acest fișier are efect numai atunci când /proc/sys/vm/overcommit_memory este stabilită la 2 (modul „overcommit never”). În acest caz, sistemul rezervă o cantitate de memorie care este minimum [3% din dimensiunea procesului curent, user_reserve_kbytes].
Valoarea implicită din acest fișier este minimul de [3% din paginile libere, 128Mio] exprimat în Kio.
Dacă valoarea din acest fișier este stabilită la zero, atunci unui utilizator i se va permite să aloce toată memoria liberă cu un singur proces (minus cantitatea rezervată de /proc/sys/vm/admin_reserve_kbytes). Orice încercare ulterioară de a executa o comandă va avea ca rezultat mesajul „fork: Cannot allocate memory”.
Modificarea valorii din acest fișier intră în vigoare ori de câte ori o aplicație solicită memorie.
/proc/sys/vm/unprivileged_userfaultfd (începând cu Linux 5.2)
Acest fișier (inscriptibil) expune un indicator care controlează dacă procesele neprivilegiate au voie să utilizeze userfaultfd(2). Dacă acest fișier are valoarea 1, atunci procesele neprivilegiate pot utiliza userfaultfd(2). Dacă acest fișier are valoarea 0, atunci numai procesele care au capacitatea CAP_SYS_PTRACE pot utiliza userfaultfd(2). Valoarea implicită în acest fișier este 1.
/proc/sysrq-trigger (începând cu Linux 2.4.21)
Scrierea unui caracter în acest fișier declanșează aceeași funcție SysRq ca și tastarea ALT-SysRq-<caracter> (a se vedea descrierea /proc/sys/kernel/sysrq). În mod normal, acest fișier poate fi scris numai de către root. Pentru detalii suplimentare, consultați fișierul sursă al nucleului Linux Documentation/admin-guide/sysrq.rst (sau Documentation/sysrq.txt înainte de Linux 4.10).
/proc/sysvipc
Subdirectorul care conține pseudo-fișierele msg, sem și shm. Aceste fișiere listează obiectele de comunicare între procese System V („Interprocess Communication”: IPC) (respectiv: cozi de mesaje, semafore și memorie partajată) care există în prezent pe sistem, oferind informații similare cu cele disponibile prin ipcs(1). Aceste fișiere au anteturi și sunt formatate (un obiect IPC pe linie) pentru o înțelegere ușoară. sysvipc(7) oferă informații suplimentare despre informațiile afișate de aceste fișiere.
/proc/thread-self (începând cu Linux 3.17)
Acest director se referă la firul care accesează sistemul de fișiere /proc și este identic cu directorul /proc/self/task/tid numit de ID-ul firului de proces (tid) al aceluiași fir.
/proc/timer_list (începând cu Linux 2.6.21)
Acest fișier numai pentru citire expune o listă a tuturor temporizatoarelor (de înaltă rezoluție) aflate în așteptare, a tuturor surselor de evenimente de ceas și a parametrilor acestora într-o formă care poate fi citită de om.
/proc/timer_stats (de la Linux 2.6.21 până la Linux 4.10)
Aceasta este o facilitate de depanare pentru a face (ab)uz de temporizator într-un sistem Linux vizibil pentru dezvoltatorii de nucleu și spațiu de utilizator. Aceasta poate fi utilizată de dezvoltatorii nucleului și ai spațiului de utilizator pentru a verifica dacă codul lor nu utilizează în mod nejustificat temporizatoarele. Scopul este de a evita trezirile inutile, optimizând astfel consumul de energie.
Dacă este activată în nucleu (CONFIG_TIMER_STATS), dar nu este utilizată, are un cost de execuție aproape zero și un cost de structură a datelor relativ mic. Chiar dacă colectarea este activată în timpul execuției, supraîncărcarea este redusă: toate blocările sunt per-CPU și căutarea este hașurată.
Fișierul /proc/timer_stats este utilizat atât pentru a controla funcția de eșantionare, cât și pentru a citi informațiile eșantionate.
Funcționalitatea timer_stats este inactivă la pornire. O perioadă de eșantionare poate fi pornită utilizând următoarea comandă:

# echo 1 > /proc/timer_stats
    

Următoarea comandă oprește o perioadă de eșantionare:

# echo 0 > /proc/timer_stats
    

Statisticile pot fi preluate prin:

$ cat /proc/timer_stats
    

În timp ce eșantionarea este activată, fiecare citire din /proc/timer_stats va afișa statistici actualizate recent. Odată ce eșantionarea este dezactivată, informațiile eșantionate sunt păstrate până la începerea unei noi perioade de eșantionare. Acest lucru permite citiri multiple.
Exemplu de ieșire din /proc/timer_stats:

$ cat /proc/timer_stats
Timer Stats Version: v0.3
Sample period: 1.764 s
Collection: active

255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
4, 1694 gnome-shell mod_delayed_work_on (delayed_work_timer_fn)
17, 7 rcu_sched rcu_gp_kthread (process_timeout) ...
1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn) 1029 total events, 583.333 events/sec

Coloanele de ieșire sunt:
[1]
o contorizare a numărului de evenimente, opțional (de la Linux 2.6.23) urmată de litera „D” dacă acesta este un temporizator cu întârziere;
[2]
PID-ul procesului care a inițializat temporizatorul;
[3]
numele procesului care a inițializat temporizatorul;
[4]
funcția în care a fost inițializat temporizatorul; și (între paranteze) funcția de reapelare care este asociată cu temporizatorul.
În timpul ciclului de dezvoltare Linux 4.11, acest fișier a fost eliminat din cauza preocupărilor legate de securitate, deoarece expune informații prin intermediul spațiilor de nume. În plus, este posibil să se obțină aceleași informații prin intermediul facilităților de urmărire din interiorul nucleului, cum ar fi ftrace.
/proc/tty
Subdirector care conține pseudo-fișierele și subdirectoarele pentru controlorii tty și disciplinele de linie.
/proc/uptime
Acest fișier conține două numere (valori în secunde): timpul de activitate al sistemului (inclusiv timpul petrecut în suspendare) și timpul petrecut în procesul de inactivitate.
/proc/version
Acest șir de caractere identifică versiunea nucleului care rulează în prezent. Acesta include conținutul /proc/sys/kernel/ostype, /proc/sys/kernel/osrelease și /proc/sys/kernel/version. De exemplu:

Linux versiunea 1.0.9 (quinlan@phaze) #1 Sâmbătă, 14 mai 01:51:54 EDT 1994
    

/proc/vmstat (începând cu Linux 2.6.0)
Acest fișier afișează diverse statistici privind memoria virtuală. Fiecare linie a acestui fișier conține o singură pereche nume-valoare, delimitată prin spațiu alb. Unele linii sunt prezente numai dacă nucleul a fost configurat cu opțiunile corespunzătoare; (în unele cazuri, opțiunile necesare pentru anumite fișiere s-au schimbat de la o versiune la alta a nucleului, astfel încât acestea nu sunt enumerate aici; detalii pot fi găsite consultând codul sursă al nucleului). Următoarele câmpuri pot fi prezente:
Cantitatea de memorie alocată pentru stivele de nucleu.
Pagini utilizate de shmem și tmpfs(5).
Numărul de pagini CMA (Contiguous Memory Allocator: „ de alocator de memorie contiguă”) libere.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
Consultați fișierul sursă al nucleului Documentation/admin-guide/mm/transhuge.rst.
/proc/zoneinfo (începând cu Linux 2.6.13)
Acest fișier afișează informații despre zonele de memorie. Acest lucru este util pentru analizarea comportamentului memoriei virtuale.

NOTE

Multe fișiere conțin șiruri de caractere (de exemplu, mediul și linia de comandă) care sunt în format intern, cu subcâmpuri terminate cu octeți nule („\0”). Atunci când inspectați astfel de fișiere, puteți constata că rezultatele sunt mai ușor de citit dacă utilizați o comandă de forma următoare pentru a le afișa:


$ cat fișier | tr '\000' '\n'

Această pagină de manual este incompletă, posibil inexactă și este genul de lucru care trebuie actualizat foarte des.

CONSULTAȚI ȘI

cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8), hdparm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8), sysctl(8)

Fișierele sursă ale nucleului Linux: Documentation/filesystems/proc.rst, Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst și Documentation/admin-guide/sysctl/vm.rst.

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

10 februarie 2023 Pagini de manual de Linux 6.03