Portál AbcLinuxu, 6. května 2025 14:20
Procfs je virtuálny súborový systém, pomocou ktorého môže používateľ nahliadnuť do vnútorných premenných jadra. Nájdete ho v adresári /proc
. Primárne bol vyvinutý na správu procesov, ale Linux z neho urobil veľmi použiteľný nástroj na správu systému.
Prvú implementáciu procfs napísal Tom J. Killian pre UNIX 8th Edition. Cieľom bolo vytvorenie prirodzeného kontrolného rozhrania pre procesy v systéme. Procfs mal slúžiť len programátorom.
V mnohých unixových systémoch bol /proc
vždy využívaný na
kontrolu bežiacich programov a nebol pre užívateľa nijak použiteľným.
Procfs je virtuálny súborový systém. To znamená, že žiaden súbor sa nenachádza na vašom disku, ale všetko je v pamäti. Takýto súborový systém zaberá len málo operačnej pamäte a je veľmi dynamický.
Na Linuxe nie je procfs používaný len na správu procesov. Vývojári Linuxu postupom času pridávali do štruktúry procfs mnoho rôznych informácií. Zásadným rozdielom od iných unixových systémov je, že každý súbor je textový a užívateľ dokáže prečítať jeho obsah.
Štruktúra procfs sa časom dostala do nekonzistentného stavu, pretože na začiatku neexistovali žiadne pravidlá, podľa ktorých by bol procfs organizovaný.
Teraz sa procfs delí na viacero rozumne usporiadaných stromov, ktoré sú však rozhádzané v základnom strome.
/proc
V hlavnom adresáti procfs sa nachádzajú:
/proc/ |-- 1/ |-- 2/ |-- 3/ |-- 4/ |-- 18/ |-- 20/ |-- 110/ |-- 6203/ |-- 6204/ | |-- auxv | |-- cmdline | |-- cwd -> / | |-- environ | |-- exe -> /usr/sbin/metalog | |-- fd/ | | |-- 0 -> /dev/pts/4 | | |-- 1 -> /dev/pts/4 | | `-- 2 -> /dev/pts/4 | . | . | . | |-- status | |-- task/ | `-- wchan |-- 7009/ . . . |-- acpi/ |-- asound/ |-- buddyinfo |-- bus/ |-- cmdline |-- cpuinfo . . . |-- swaps |-- sys/ |-- sysvipc/ |-- tty/ |-- uptime |-- version `-- vmstat
Ukážka štruktúry adresára /proc
.
Adresáre sú vyznačené hrubým písmom. Podčiarknuté kurzíva označujú symbolické linky. Symbolická linka je súbor obsahujúci len meno iného súboru, ktorú keď otvoríte, správa sa ako súbor na ktorý sa odkazuje.
Tieto adresáre spoznáte podľa toho, že ich meno je len číslo. Toto číslo je identifikátor procesu v systéme, nazývané PID (Process IDentifier).
Štruktúra týchto adresárov je rovnaká. Obsahujú rovnako nazvané súbory:
cwd
root
root
sa na tento adresár odkazuje. Pozri:
program chroot.cmdline
fd/
Najdôležitejšie položky adresára procesu.
Na iných unixových operačných systémoch sa s týmto typom položiek v procfs nestretnete. Je to vlastnosť Linuxu, ktorý robí procfs zaujímavým.
Pomocou súborov procfs sa exportujú užívateľského prostredia informácie z jadra. Pomocou nich môžeme zisťovať rôzne podrobnosti o systéme a niektorých druhoch hardvéru.
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Celeron(R) CPU 2.40GHz stepping : 9 cpu MHz : 2424.546 cache size : 128 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid xtpr bogomips : 4784.12
Výpis informácií o CPU.
V procfs sa podobných súborov nachádza veľké množstvo. Ich obsah môže, ale nemusí užívateľa zaujímať. Informácie, ktoré sa v nich nachádzajú, sú vždy aktuálne, pretože sa vzťahujú priamo na premenné v pamäti.
/proc/sys
Toto je pre administrátorov najzaujímavejšie miesto v procfs. Nachádzajú sa v ňom sysctl (System Control) súbory. Pomocou nich môžete meniť nastavenie jadra za behu a ovplyvňovať jeho správanie.
K tu ukrytým súborom má užívateľ root práva na zápis. Zmenu nastavenia uskutočnite jednoduchým zápisom novej hodnoty do súboru, ktorý reprezentuje premennú, ktorú chcete zmeniť.
# echo 1 > /proc/sys/dev/cdrom/autoeject
Nastavenie automatického otvárania CD mechaniky po odpojení.
Najdôležitejšie pre mnoho serverov je nastavenie siete. V adresári
/proc/sys/net/
sa nachádza mnoho parametrov pre rôzne
sieťové protokoly.
Program sysctl
je nástroj, ktorým si môžeme nastavovanie
uľahčiť. Sysctl vie vypísať a nastaviť všetky hodnoty súborov v adresári
/proc/sys
. Nastavenia majú rovnaký tvar ako cesta k ich
súborom relatívne od /proc/sys
, len lomítka '/' sú zamenené
bodkami.
Sysctl vie zaviesť nastavenia zo súboru /etc/sysctl.conf
,
v ktorom sa ich môže nachádzať viacero. Skoro všetky distribúcie využívajú
/etc/sysctl.conf
na konfiguráciu jadra pri zavádzaní
systému.
# Disables packet forwarding
#net.ipv4.ip_forward = 0
# Disables IP dynaddr
#net.ipv4.ip_dynaddr = 0
# Disable ECN
#net.ipv4.tcp_ecn = 0
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Enable reverse path
net.ipv4.conf.all.rp_filter = 1
Ukážka časti konfiguračného súboru /etc/sysctl.conf
.
Pozrite sa do /proc/sys
, kde nájdete mnoho užitočných
nastavení, a podľa uváženia ich nastavte v súbore
/etc/sysctl.conf
, aby vaša distribúcia nastavenia aplikovala
vždy po reštarte.
Všetky nižšie uvedené súbory sa dajú vypísať jednoduchým príkazom:
$ cat /proc/<súbor>
/proc/cpuinfo
/proc/version
/proc/sys/dev/cdrom/info
/proc/sys/dev/cdrom/autoclose
/proc/sys/dev/cdrom/autoeject
mount
) CDčka automaticky zavrie (ak bola otvorená). Hodnota
1 v súbore autoeject
CD mechaniku automaticky otvorí pri
odpojení média (umount
)./proc/sys/net/*
Documentation/networking/ip_sysctl.txt
, alebo na http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html.Tieto jednotlivé súbory sú len ukážkou. Ak sa budete chcieť dozvedieť niečo viac o inom súbore z procfs, jednoducho ho aj s celou cesto vložte do Googla.
Ako som povedal na začiatku článku, prvú implementáciu procfs napísal Tom J. Killian pre UNIX 8th Edition v roku 1984. Pán Killian je autorom knihy "Processes as files", takže je vlastne autorom celej myšlienky.
V UNIX 8th Edition mal každý proces jeden súbor a procfs neexportoval žiadne ďalšie informácie do užívateľského prostredia.
Procfs bol portovaný pre SVR4 Rogerom Faulknerom a Ronom Gomesom v roku 1991.
4.4BSD ako prvý implementoval procfs s podadresármi.
Solaris 2.6 prevzal všetko dobré, čo bolo v procfs použité v iných systémoch, a urobil z neho hlavné rozhranie na prácu s procesmi v systéme.
Linux ako prvý použil ASCII formáty v súboroch procfs. Linux teda využíva procfs aj na exportovanie dát, ktoré sa procesov netýkajú, a na systémovú kontrolu.
Súborový systém procfs ponúka veľké množstvo informácií o systéme a o hardvére, ku ktorým sa užívatelia iných OS jednoducho nedostanú.
Často sa môžeme stretnúť s tvrdením, že sysfs má vytlačíť procfs z jadra. To však nie je pravda. Mnoho ľudí chce procfs prepracovať, lenže to je zložitejšia úloha a jadrá rady 2.8 žiadne zmeny pravdepodobne neprinesú.
Tony Lawrence sa na Developer tutorial vyjadril: "/proc by mal byť nazvaný /kernel
a proc by sa nachádzal v ňom. Už je neskoro, samozrejme, ..." V tomto
prípade by sa sysfs taktiež nachádzal v adresári /kernel
.
Procfs ešte nejakú tú chvíľu v Linuxe zostane a nie je na škodu pozoznamovať sa s jeho výhodami a nevýhodami.
CONFIG_BSD_PROCESS_ACCT=y
/proc
chaos, když se tam nahodile bez ladu a skladu přidávaly soubory, z nichž většina byla sice hezky srozumitelná pro člověka, ale prakticky neparsovatelná programem. Tento nepořádek se teď postupně uklízí a ty nejhorší atavismy se postupně opatrně odbourávají (např. /proc/pci
). Kvůli utilitám, které mezitím stihly vzniknout a které parsují ty neparsovatelné interface, ale proces čištění neprobíhá příliš rychle…
Jsem dinosaurus a konkretne /proc/pci, /proc//interupts, /proc/irq apod. mi budou opravdu chybet, casto mi usetrily spoustu nervu...
Ale ty snahy celkem chapu a zacnu se ucit sysfs...
PS: Proc mi to hodilo "Re: Přetaktování procosoru"?
3 -> socket:[15133]
pod /proc/$PID/fd/
, podivejte se na sloupec inode
v /proc/net/tcp
.
užívateľ -a mn. -ia m. kto má niečo v užívaní: užívateľ bytu;...
používateľ -a mn. -ia m. kto niečo používa: používatelia jazykaTakze pravda je zrejme na Tvojej strane.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.