Souborový systém proc obsahuje hierarchii speciálních souborů, které představují aktuální stav jádra. Je pojmenován podle svého původního účelu, kterým je rozhraní ke strukturám v rámci běžících procesů pro podporu ladicích nástrojů. Linux to převzal ze Solarisu, ale také přidal rozhraní do jádra. Souborový systém proc se v průběhu let stal docela chaotický, takže Linux vytvořil souborový systém sysfs, aby jej vyčistil.
Soubory v adresáři /proc obsahují informace o vašem hardwaru a aktuálních procesech běžících na vašem systému. Soubory, které mají oprávnění k zápisu, lze upravit a změnit tak konfiguraci jádra.
Virtuální souborový systém
Soubory v adresáři /proc jsou virtuální soubory; proto je proc označován jako virtuální souborový systém. Většina virtuálních souborů má velikost nula bajtů, ale při prohlížení obsahuje velké množství informací. Většina časových a datových razítek na virtuálních souborech odráží aktuální čas a datum; tyto soubory jsou však neustále aktualizovány.
Virtuální soubory jako /proc/interrupts, /proc/meminfo, /proc/cpuinfo a /proc/devices poskytují pohled na hardware systému. Jiné, jako soubor /proc/filesystems a adresář /proc/sys poskytují informace o konfiguraci systému a rozhraní. Soubory obsahující informace o podobných tématech jsou seskupeny do virtuálních adresářů. Například adresáře procesů obsahují informace o každém běžícím procesu v systému.
Prohlížení virtuálních souborů
Většinu virtuálních souborů v /proc lze zobrazit pomocí příkazů jako cat, more a less. Chcete-li například zobrazit informace o CPU systému, zadejte:
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 79 model name : Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz stepping : 1 microcode : 0x1 cpu MHz : 2199.998 cache size : 30720 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt bogomips : 4399.99 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
K určitým souborům lze přistupovat pouze s právy root. Některé soubory v /proc obsahují informace, které nejsou pro člověka čitelné. K zobrazení těchto souborů použijte nástroje jako lspci, free a top. Například použijte příkaz lspci k zobrazení seznamu všech zařízení PCI:
# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon
Změna virtuálních souborů
Většina virtuálních souborů v adresáři /proc je pouze pro čtení. Některé jsou však zapisovatelné a lze je použít k úpravě nastavení v jádře. To platí zejména pro soubory v adresáři /proc/sys. Chcete-li změnit hodnotu virtuálního souboru, použijte následující syntaxi:
# echo value > /proc/file
Chcete-li například změnit název hostitele, zadejte:
# echo www.example.com > /proc/sys/kernel/hostname
Ostatní soubory fungují jako binární nebo booleovské přepínače. Zobrazení souboru vrátí buď 0 (vypnuto nebo nepravda) nebo 1 (zapnuto nebo pravda). Příklad:
# cat /proc/sys/net/ipv4/ip_forward 0
0 znamená, že jádro nepředává síťové pakety. Zapnutí předávání paketů:
# echo 1 > /proc/sys/net/ipv4/ip_forward # cat /proc/sys/net/ipv4/ip_forward 1
Soubory nejvyšší úrovně v rámci /proc
Některé z užitečnějších virtuálních souborů na nejvyšší úrovni adresáře /proc jsou popsány zde. Toto nemá být úplný seznam, ale uvést příklady některých souborů a jejich účel. Mnoho z těchto souborů je popsáno dále v příslušných lekcích.
- /proc/buddyinfo :Tento soubor se používá především pro diagnostiku problémů s fragmentací paměti.
- /proc/cmdline :Tento soubor ukazuje parametry předané jádru v době jeho spuštění.
- /proc/cpuinfo :Tento virtuální soubor identifikuje typ procesoru používaného vaším systémem.
- /proc/crypto :Tento soubor obsahuje seznam všech nainstalovaných kryptografických šifer používaných jádrem Linuxu, včetně dalších podrobností pro každou z nich.
- /proc/devices :Tento soubor zobrazuje různá znaková a bloková zařízení aktuálně nakonfigurovaná (nezahrnuje zařízení, jejichž moduly nejsou načteny).
- /proc/dma :Tento soubor obsahuje seznam registrovaných používaných kanálů ISA DMA.
- /proc/execdomains :Tento soubor uvádí spouštěcí domény aktuálně podporované linuxovým jádrem spolu s řadou osobností, které podporují.
- /proc/filesystems :Tento soubor zobrazuje seznam typů souborových systémů aktuálně podporovaných jádrem. První sloupec označuje, zda je souborový systém připojen k blokovému zařízení. Ty začínající nodev nejsou připojeny k zařízení. Ve druhém sloupci jsou uvedeny názvy podporovaných systémů souborů. Příkaz mount cyklicky prochází systémy souborů, které jsou zde uvedeny, pokud jeden není zadán jako argument.
- /proc/interrupts :Tento soubor zaznamenává počet přerušení na IRQ na architektuře x86.
- /proc/iomem :Tento soubor zobrazuje aktuální mapu paměti systému pro každé fyzické zařízení.
- /proc/ioports :Tento soubor poskytuje seznam aktuálně registrovaných oblastí portů používaných pro vstupní nebo výstupní komunikaci se zařízením.
- /proc/kcore :Tento soubor představuje fyzickou paměť systému a je uložen ve formátu základního souboru. Obsah tohoto souboru je navržen tak, aby byl prozkoumán debuggerem, jako je gdb, a není čitelný pro člověka.
- /proc/kmsg :Tento soubor se používá k uložení zpráv generovaných jádrem. Tyto zprávy pak přebírají další programy, jako je /bin/dmesg.
- /proc/loadavg :Tento soubor poskytuje pohled na průměrnou zátěž, pokud jde o CPU a I/O v průběhu času, a také další data používaná uptime a další příkazy.
- /proc/locks :Tento soubor zobrazuje soubory aktuálně uzamčené jádrem. Obsah tohoto souboru obsahuje interní data pro ladění jádra a může se velmi lišit v závislosti na použití systému.
- /proc/mdstat :Tento soubor obsahuje aktuální informace pro vícediskové konfigurace RAID.
- /proc/meminfo :Tento soubor uvádí velké množství cenných informací o využití paměti RAM systémem.
- /proc/modules :Tento soubor zobrazuje seznam všech modulů načtených do jádra. Většinu těchto informací lze také zobrazit pomocí příkazu /sbin/lsmod.
Zpracovat adresáře v /proc
Adresář /proc obsahuje adresáře s číselnými názvy. Tyto adresáře jsou pojmenovány podle ID procesu programu a obsahují informace o tomto procesu. Vlastník a skupina každého adresáře procesu jsou nastaveny na uživatele spouštějícího proces. Každý adresář procesu obsahuje několik souborů včetně:
- cmdline :Příkaz vydaný při spuštění procesu
- cwd :Symbolický odkaz na aktuální pracovní adresář procesu
- prostředí :Seznam proměnných prostředí pro proces
- exe :Symbolický odkaz na spustitelný soubor tohoto procesu
- fd :Adresář obsahující všechny deskriptory souborů pro konkrétní proces
- mapy :Seznam mapování paměti na spustitelné soubory a soubory knihoven souvisejících s procesem
- paměť :Paměť, kterou proces drží (soubor nemůže uživatel přečíst)
- root :Odkaz na kořenový adresář procesu
- stat :Stav procesu včetně stavu běhu a využití paměti
- statm :Stav paměti používané procesem
- stav :Stav procesu ve srozumitelnější podobě než stat nebo statm
Další adresáře v /proc
Další adresáře v adresáři/proc seskupují podobné informace podle tématu. Následuje částečný seznam těchto adresářů:
- /proc/bus :Tento adresář obsahuje informace o různých sběrnicích dostupných v systému. Podadresáře a soubory dostupné v /proc/bus se liší v závislosti na zařízeních připojených k systému.
- /proc/bus/pci, /proc/bus/usb :Seznam všech zařízení PCI a USB přítomných v systému můžete získat pomocí příkazu cat na souboru zařízení v těchto adresářích, ale výstup je obtížné číst a interpretovat. Pro lidsky čitelný seznam zařízení spusťte příkazy lspci a lsusb.
- /proc/driver :Tento adresář obsahuje informace o konkrétních ovladačích používaných jádrem.
- /proc/fs :Tento adresář ukazuje, které systémy souborů jsou exportovány. Pokud běží server NFS, zadáním cat /proc/fs/nfsd/exports zobrazíte sdílené systémy souborů a oprávnění.
- /proc/irq :Tento adresář se používá k nastavení IRQ na afinitu CPU, což umožňuje systému připojit konkrétní IRQ pouze k jednomu CPU. Případně může vyloučit CPU ze zpracování jakýchkoli IRQ.
- /proc/self/net :Tento adresář poskytuje komplexní pohled na různé síťové parametry a statistiky. Každý adresář a virtuální soubor v tomto adresáři popisuje aspekty konfigurace sítě systému. Soubor /proc/net je symbolickým odkazem na tento adresář.
- /proc/scsi :Primární soubor v tomto adresáři je /proc/scsi/scsi, který obsahuje seznam všech rozpoznaných zařízení SCSI. Z tohoto seznamu je k dispozici typ zařízení a také název modelu, výrobce, kanál SCSI a údaje ID.
- /proc/sys :Tento adresář se liší od ostatních v /proc, protože nejenže poskytuje informace o systému, ale také vám umožňuje okamžitě povolit a zakázat funkce jádra. Pokud má soubor oprávnění k zápisu, lze jej použít ke konfiguraci jádra. Změna hodnoty v souboru /proc/sys/ se provádí ozvěnou nové hodnoty do souboru. Chcete-li například změnit název hostitele na www.example.com :
# echo www.example.com > /proc/sys/kernel/hostname
Ostatní soubory fungují jako binární nebo booleovské přepínače. Hodnota 0 představuje vypnuto nebo nepravda. Hodnota 1 znamená on nebo true. Chcete-li například zapnout předávání paketů:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Změny provedené pomocí příkazu echo nejsou trvalé a zmizí po restartování systému. Chcete-li, aby se změny konfigurace projevily po restartu systému, přidejte je do souboru /etc/sysctl.conf.
- /proc/sys/dev :Tento adresář poskytuje parametry pro konkrétní zařízení v systému.
- /proc/sys/fs :Tento adresář obsahuje možnosti a informace týkající se různých aspektů systému souborů, včetně kvóty, popisovače souboru a informací o inode.
- /proc/sys/kernel :Tento adresář obsahuje řadu různých konfiguračních souborů, které přímo ovlivňují činnost jádra.
- /proc/sys/net :Tento adresář obsahuje podadresáře týkající se různých síťových témat. Soubory v těchto adresářích můžete změnit a upravit tak konfiguraci sítě na běžícím systému.
- /proc/sysvipc :Tento adresář obsahuje informace o prostředcích System V Interprocess Communication (IPC). Soubory v tomto adresáři se týkají System V IPC volání zpráv (msg), semaforů (sem) a sdílené paměti (shm).
- /proc/tty :Tento adresář obsahuje informace o dostupných a aktuálně používaných zařízeních tty v systému. Soubor ovladačů je seznam aktuálně používaných zařízení tty.