/proc - Získání informací o procesu a hardwaru Linuxu
Dnes se ponoříme do obsahu adresáře /proc, abychom lépe porozuměli jeho funkcím. Je důležité poznamenat, že adresář /proc je společným prvkem všech distribucí Linuxu, bez ohledu na jejich typ nebo architekturu.
Jedna mylná představa, kterou musíme okamžitě objasnit, je, že adresář /proc NENÍ konvenční souborový systém v tradičním slova smyslu.
Jedná se o virtuální souborový systém, který obsahuje informace o procesech a další data související se systémem v rámci procfs. Tento souborový systém je namapován do adresáře /proc a je připojen během procesu spouštění systému.
Co je /proc v Linuxu
Souborový systém /proc slouží jako rozhraní pro datové struktury jádra a informace za běhu, což uživatelům i aplikacím poskytuje způsob, jak získat přístup k podrobným informacím o procesech, konfiguraci systému, hardwaru atd. tato data prostřednictvím hierarchie virtuálních souborů.
Chcete-li zobrazit úplný seznam souborů a adresářů v systému souborů /proc, můžete použít příkaz ls, jak je uvedeno na obrázku.
ls /proc
Navigace /proc v Linuxu
Když přejdete do adresáře /proc, všimnete si, že tam jsou některé známé soubory a pak celá řada očíslovaných adresářů, z nichž každý odpovídá běžícímu procesu v systému.
cd /proc
ls
Tyto očíslované adresáře představují procesy, lépe známé jako ID procesů (PID), a v nich příkaz, který je obsazuje. Soubory obsahují systémové informace, jako je paměť (meminfo), informace o CPU (cpuinfo) a dostupné souborové systémy.
Zde je několik klíčových souborů a adresářů, se kterými se setkáte:
/proc/cpuinfo
– Zobrazí informace o CPU (procesorech) v systému, jako je model, rychlost a počet jader./proc/meminfo
– Zobrazí podrobnosti o využití paměti a statistiky, které obsahují celkové množství paměti, volnou paměť a paměť používanou jednotlivými procesy./proc/filesystems
– Obsahuje seznam všech souborových systémů, které jsou podporovány jádrem./proc/sys
– Vypíše konfigurační a runtime parametry pro jádro./proc/loadavg
– Zobrazí průměrné zatížení systému v různých časových intervalech, jako je 1, 5 a 15 minut./proc/self
– Symbolický odkaz na vlastní adresář procesu./proc/stat
– Obsahuje různé statistiky o systému, jako je počet spuštěných procesů, počet přerušení a množství času stráveného v jednotlivých stavech CPU./proc/uptime
– Obsahuje dobu, po kterou byl systém spuštěn./proc/PID
– Obsahuje informace o konkrétním procesu, kde PID je ID procesu.
Extrahování systémových informací
Soubor /proc/meminfo se používá k zobrazení informací o využití paměti a statistikách systému Linux, který obsahuje snímek různých metrik souvisejících s pamětí, což může být užitečné pro monitorování výkonu systému a využití zdrojů. .
cat /proc/meminfo
Jak vidíte, /proc/meminfo obsahuje spoustu informací o paměti vašeho systému, včetně celkového dostupného množství (v kb) a volného množství na prvních dvou linky.
Spuštěním příkazu cat na libovolném souboru v /proc se zobrazí jejich obsah. Informace o všech souborech jsou dostupné na man stránce spuštěním:
man 5 /proc/<filename>
Poskytnu vám rychlý přehled o souborech /proc:
- /proc/cmdline – Informace z příkazového řádku jádra.
- /proc/console – Informace o aktuálních konzolích včetně tty.
- /proc/devices – Ovladače zařízení aktuálně nakonfigurované pro běžící jádro.
- /proc/dma – Informace o aktuálních kanálech DMA.
- /proc/fb – Zařízení Framebuffer.
- /proc/filesystems – Aktuální souborové systémy podporované jádrem.
- /proc/iomem – Aktuální mapa systémové paměti pro zařízení.
- /proc/ioports – Registrované oblasti portů pro vstupně-výstupní komunikaci se zařízením.
- /proc/loadavg – Průměrná zátěž systému.
- /proc/locks – Soubory aktuálně uzamčené jádrem.
- /proc/meminfo – Informace o systémové paměti (viz výše uvedený příklad).
- /proc/misc – Různé ovladače registrované pro různá hlavní zařízení.
- /proc/modules – Aktuálně načtené moduly jádra.
- /proc/mounts – Seznam všech připojení používaných systémem.
- /proc/partitions – Podrobné informace o oddílech dostupných systému.
- /proc/pci – Informace o každém zařízení PCI.
- /proc/stat – Záznam nebo různé statistiky uchovávané od posledního restartu.
- /proc/swap – Informace o odkládacím prostoru.
- /proc/uptime – Informace o provozuschopnosti (v sekundách).
- /proc/version – Nainstalovaná verze jádra, verze gcc a distribuce Linuxu.
Extrahování informací o procesu
V očíslovaných adresářích /proc najdete několik souborů a odkazů. Pamatujte, že čísla těchto adresářů korelují s PID příkazu, který je v nich spuštěn.
Například přechod na /proc/
poskytuje podrobnosti jako:
/proc//cmdline
– Argumenty příkazového řádku používané ke spuštění procesu./proc//status
– Podrobné informace o stavu, včetně využití paměti a statistik procesů./proc//fd
– Symbolické odkazy na soubory otevřené procesem.
Použijme příklad k zobrazení složky s názvem /proc/12.
cd /proc/12
ls
Pokud běžím:
cat /proc/12/status
Dostávám následující:
Takže, co to znamená? No, důležitá část je nahoře. Ze stavového souboru vidíme, že tento proces patří rcu_tasks_rude_kthread. Jeho aktuální stav je nečinný a jeho ID procesu je samozřejmě 12.
Můžeme také vidět, kdo to spouští, protože UID a GID jsou 0, což znamená, že tento proces patří k rootu silný> uživatel.
V každém očíslovaném adresáři budete mít podobnou strukturu souborů a ty nejdůležitější s jejich popisy jsou následující:
- cmdline – příkazový řádek procesu
- prostředí – proměnné prostředí
- fd – deskriptory souborů
- limity – obsahuje informace o limitech procesu
- připojení – související informace
V očíslovaném adresáři si také všimnete několika odkazů:
- cwd – odkaz na aktuální pracovní adresář procesu
- exe – odkaz na spustitelný soubor procesu
- root – odkaz na pracovní adresář procesu
To by vám mělo pomoci seznámit se s adresářem /proc. Měl by také poskytnout pohled na to, jak řada příkazů získává své informace, jako je doba provozu, lsof, mount a ps, abychom jmenovali alespoň některé.