Adresářové struktury

Adresářové struktury

 


Dnes si poněkud přiblížíme stavbu linuxového jádra a povíme si něco bližšího o struktuře jednotlivých adresářů

tucnak_button.gif

vycházejících z kořenového adresáře. Ptáte se, proč hned neupozorňuji, které distribuce se to bude týkat? To je právě ono! Ve všech Linuxech to je stejné. I ve světě Unixu s těmito pravidly pochodíte. Takže zde jsou:

 

Poznámka:
Aby nedošlo k omylu (a k zklamání). Linux "vychází" (prosím neberte doslova:-) z větve Unixu zvané Minix. Na přiloženém obrázku se můžete přesvědčit, že od verze jádra 2.x vychází i z větve zvané SytemV, konkrétně SystemV R4.2 (chcete-li, pak se též používají výrazy jako  V apod.) Takovým Unixem je například Solaris nebo HP-UX. Takže, s adresářovou strukturou pochodíte i ve světě Unixu, ale mám tím na mysli Unix SystemV.

 

unix.gif

Vývoj Unixu

 

Při psaní tohoto článku jsem vycházel z knihy "Linux - Dokumentační projekt" (Computer Press 1998, český překlad). Pravda, kniha je to již tři roky stará (a originál ještě starší), ale pořád dobrá. Snažil jsem se dodržet názvosloví (souborové systémy), některé věci jsem doplnil (ukázka rozdělení disku) a řada věcí se změnila (v době psaní originálu byla poslední verze jádra 2.0.30 a dnes máme pomalu 2.4.10). Odkaz na elektronickou podobu LDP (v češtině) naleznete například zde:
http://www.cpress.cz/knihy/ldp2/LDP2.PDF

Stavba jádra
Nejprve se podívejme na obrázek. Je patrné, že jádro plní funkci jakéhosi "oddělovače" vlastních uživatelských programů od hardware.

Dalo by se to vyjádřit asi takto:

 

levels.gif

Jednotlivé úrovně operačního systém

 

Vtip je  tom, že programátor pak píše své programy tak, že se v nich odkazuje na určité služby (knihovny, jádro), které jsou "normalizované". Ptáte se proč? Těch důvodů je mnoho. Nabízejí se tu výrazy jako slučitelnost, jednotnost, přehlednost nebo i přenositelnost.

 

Programy uživatelské úrovně

Běžné programy

 

Jádro

 

 

Rozhraní pro volání systému

Správa virtuálního systému souborů

Správce paměti

Správce procesů

Abstraktní síťové služby (sockets)

Různé ovladače souborových systémů

 

Ovladače protokolu TCP/IP

 

Ovladač IDE harddisku

Ovladač disketové jednotky

Ovladač síťové karty

Jádro

 

Hardware

 

 

IDE Harddisk

Disketová jednotka

Síťová karta


Některé z důležitějších částí jádra Linuxu

Důležité části jádra systému
Jádro Linuxu sestává z několika důležitých subsystémů. Jsou to části řízení procesů (správce procesů), správy paměti (správce paměti), ovladačů technických prostředků, ovladačů souborových systémů, správy sítě a různé další části. Obecně těmto částem říkáme moduly. Některé z nich jsou pak vyobrazeny na předchozím obrázku.

Snad nejdůležitějšími subsystémy (bez nichž nic jiného nefunguje) jsou správa paměti a správa procesů. Subsystém správy paměti zajišťuje přidělování paměťových oblastí a odkládacího prostoru (swap space) jednotlivým procesům, částem jádra a vyrovnávací paměti (buffer cache). Subsystém správy procesů vytváří procesy a přepínáním mezi aktivními procesy, které využívají procesor, zabezpečuje multitasking.

Jádro systému na nejnižší úrovni obsahuje ovladače pro všechny druhy technických zařízení, které operační systém podporuje. Vzhledem k tomu, že na světě existuje celá řada různých typů hardwaru, je počet ovladačů zařízení velký. Je ale mnoho jinak podobných zařízení, která se často liší pouze v tom, jak spolupracují s jednotlivými programy nebo moduly. Takovéto podobnosti umožňují definovat obecné třídy ovladačů, jež podporují podobné operace. Každý člen takovéto třídy má stejné rozhraní k ostatním částem jádra. Liší se v tom, jak tyto operace implementuje. Například všechny ovladače disků vypadají pro zbytek jádra podobně. To znamená, že všechny znají operace jako -inicializuj diskovou jednotku, -čti sektor Nik a -zapiš sektor Ni..

Některé softwarové služby, jež poskytuje jádro samotné, mají rovněž podobné vlastnosti. Proto mohou být také rozdělené do tříd. Ku příkladu různé síťové protokoly byly vyčleněny do jednoho programového rozhraní knihovny -BSD (socket library). Dalším příkladem je vrstva virtuálního souborového systému (virtual filesystem, zkráceně VFS). Ta odděluje operace souborového systému od jejich implementace. Každý typ souborového systému obstarává implementaci určité množiny operací, společné všem systémům souborů. Když se některý z prvků systému pokouší využít určitý souborový systém, žádost jde přes VFS. Ten ji směřuje k požadovanému ovladači konkrétního systému souborů.

Právě jednotná struktura jádra je jedním ze základních kamenů stability a spolehlivosti systému. Obecně lze říci, že v tomto směru je Linux velmi daleko. Jeho obecná dostupnost (a to včetně zdrojových kódů), spolu s miliony nadšenců po celém světě - to jsou základní faktory, které přispěly k "vybroušení" stability jádra.

Mimochodem, pokud si budete chtít počíst o jádře systému podrobněji, zkuste to třeba v knize The Linux Kernel:
http://www.linuxdoc.org/LDP/tlk/tlk.html

Struktura adresářů
Na obrázku je "běžná" struktura adresářů v kořenovém adresáři. Pokud nebudete mít nějakou "speciální" instalaci Linuxu, pak by jste tyto adresáře měli ve svém kořenovém adresáři najít vždy.

 

home

user1

 

user2

 

user3

 

user4

bin

 

proc

 

usr

bin

 

lib

 

man

 

tmp

boot

 

lib

 

dev

 

etc

 

var

lib

 

log

 

run

 

spool

 

tmp

opt

 

tmp

 


Části adresářové struktury Unixu. Podtržené adresáře označují hranice diskových oblastí.

Ukázkové rozložení oblastí (partitions) disku může vypadat třeba takto:

!COMPILER-ERROR-TAG-NOT-FOUND-root@host/root!# df -h

Filesystem

Size

Used

Avail

Use%

Mounted on

 

/dev/hda5

1.7G

165M

1.4G

10%

/

/dev/hda1

21M

4.9M

15M

25%

/boot

/dev/hdb5

1.2G

754M

368M

68%

/usr

/dev/hdb1

690M

26M

628M

4%

/var

V našem případě vidíme existující rozdělení disků, které se používá třeba na linux routeru.

Norma FSSTND

Nejprve je třeba si říci, že určité normy tu jsou. Tou hlavní je Standard systému souborů operačního systému Linux (FSSTND), který je pokusem zavést jisté konvence do organizace adresářového stromu operačního systému Linux. Výhodou přijetí takovéto normy je skutečnost, že pokud bude vše na svém obvyklém místě, bude jednodušší psát programy a přenášet na Linux software z jiných platforem. Zároveň to ulehčí správu počítačů, na kterých běží operační systém Linux. I když neexistuje autorita, která by vývojáře, programátory a distributory donutila přizpůsobit se této normě, je její podpora v současnosti součástí většiny (ne-li všech) distribucí Linuxu. Mohu-li vám doporučit, řiďte se touto normou také, ušetříte si spoustu zbytečných nepříjemností. Je faktem, že norma FSSTND se snaží sledovat tradice Unixu i současné trendy jeho vývoje.

Motivací je snaha o usnadnění přechodu na Linux pro uživatele, kteří mají zkušenosti s jinýmy systémy Unix a naopak.

Tato kapitolka samozřejmě není detailním opisem FSSTND, je jen stručným vyjádřením věcí zde popsaných.

Rovněž zde nenajdete podrobnosti týkající se všech typů souborových systémů. Jednak se jedná skutečně o "specialitky", jednak bych těmito "prkotinami" patrně otrávil většinu čtenářů dřív, než dočtou konec stránky:-))))

Odkaz na FSSTND najdete například zde:
http://www.ibiblio.org/pub/Linux/docs/fsstnd/
Oproti původnímu LDP (tedy Linux Dokumentační Projekt), zde ovšem naleznete FSSTND v 2.0, zatímco LDP se odkazuje ještě na verzi 1.2.
Mimochodem, pokud vejdete na www.google.com a zadáte fsstnd, dostanete slušnou řádku odkazů.

Vlastní struktura adresářů

Celou stromovou strukturu adresářů je možné rozdělit na menší části, tzv. svazky. Každá z těchto částí může být umístněna na vlastním disku nebo samostatné diskové oblasti (logické sekci). Tak se lze jednoduše přizpůsobit omezením velikosti disků a zároveň usnadnit zálohování i ostatní úkoly spojené se správou systému. Nejdůležitější z těchto částí jsou adresář -root (kořenový svazek), dále adresáře /usr, /var a /home (viz obrázek 2). Každý systém souborů má jiné určení. Adresářová stromová struktura byla navržena tak, aby fungovala i v síti počítačů s operačním systémem Linux. Uživatelé a programy tak mohou pomocí sítě sdílet některé části systémů souborů, a to buď prostřednictvím zařízení určených pouze pro čtení (např. CD-ROM), nebo pomocí sítě se systémem NFS.

Ještě jedno vysvětlení je tu na místě: v textu se setkáte s pojmy adresář a souborový systém. Skutečně vyčerpávající popis těchto dvou pojmů by asi byl dosti rozvláčný (a...nudný). Zkrátka: Souborový systém (File System) je způsob uložení dat na disku (a práce s nimi). Řadu souborových systémů nepochybně znáte (ext2, vfat, iso9660 apod.) Adresář je vlastně již jakousi "podmnožinou" v souborovém systému. Je to označení pro konkrétní oblast disku, obsahující určitá data.

Jinými slovy: Pod pojmem Souborový systém si představte disk (nebo jeho logickou část - zkrátka partition). Adresář se již vztahuje ke struktuře uložení dat na tomto disku. Vlastní soubory jsou pak obsahem daného adresáře.

Nejprve je třeba si říci, že Kořenový adresář -root (kořenový svazek) je specifický pro každý počítač. Obecně je uložen na lokálním disku (avšak může to být i virtuální disk v paměti RAM (tzv.-ramdisk), nebo síťová disková jednotka). Kořenový svazek obsahuje soubory nutné pro zavedení systému a jeho uvedení do stavu, ve kterém mohou být připojené ostatní souborové systémy. Obsah kořenového souborového systému postačuje pro práci v jednouživatelském režimu. Na tomto svazku jsou rovněž uloženy nástroje pro opravy poškozeného souborového systému a pro obnovení ztracených souborů ze záloh.

Nyní se podívejme na jednotlivé adresáře

 

Různé části, na které je hierarchická adresářová struktura rozčleněna, jsou zde označeny jako samostatné svazky (souborové systémy). Není ale žádný zvláštní důvod k tomu, aby ve skutečnosti ležely na samostatných oddělených svazcích. Všechny by mohly být nakonec i v jediném souborovém systému. Takové řešení má význam hlavně pro malé jednouživatelské systémy, kdy je prioritou jednoduchost. Celá stromová adresářová struktura může být rozdělena na souborové systémy i jinak. Způsob jejího rozčlenění závisí na tom, jak velký je disk a jak velký diskový prostor bude vyhrazený pro různé účely. Jedinou věcí, na kterou je potřeba dbát, jsou standardní unixová jména. Ty je potřeba zachovat. I když bude adresář /var a /usr ve stejné diskové oblasti, musí být zachována standardní jména, jako např. /usr/lib/libc.a nebo /var/adm/messages. Totéž platí i v případě, že se například přesune adresář /var do adresáře /usr/var a na původním místě přesunutého adresáře bude symbolický link z adresáře /usr/var.

Poznámka:
Pro Ty, kdo nejsou zběhlí v Linuxu/Unixu je předchozí odstavec možná nepřehledný. Vtip je v tom, že jednotlivé svazky "disků" se připojují do přípojných bodů, kterými jsou .... adresáře. Tedy, adresář /opt se zrovna tak může nacházet na disku (svazku) /dev/hda1 , jako na disku /dev/hdc3. Pokud se stále ještě neorientujete, doporučuji nahlédnout do manuálů k příkazům mount a fdisk.

Struktura souborového systému Unixu sdružuje soubory podle jejich účelu. Jenom tak lze zaručit, že budou například všechny příkazy na jednom místě, data na jiném, dokumentace na dalším a tak dál. Alternativou by bylo sdružovat soubory podle toho, ke kterému programu patří. Pak by mohly být například všechny soubory pro program Emacs v jednom adresáři, všechny soubory pro TEX v jiném a podobně. Problém druhého přístupu je v tom, že je velmi obtížné sdílet soubory (adresář určitého programu často obsahuje jak statické soubory, které lze sdílet, tak soubory, jejichž obsah se mění, a ty sdílet nelze). Rovněž by bylo velmi složité dohledávat v rámci celého systému soubory určitého typu, například manuálové stránky aplikací uložené na mnoha různých místech. Programátory by jistě strašila noční můra, jak v takovémto případě vytvořit programy, které by byly schopné v případě potřeby manuálové stránky všech aplikací nalézt.

Kořenový svazek -root
Kořenový svazek -root by obecně měl obsahovat co nejméně souborů, protože představuje velmi kritické místo. Faktem je, že u malého souborového systému, který se mění jenom zřídka, je menší pravděpodobnost poškození. Poškození souborového systému -root většinou znamená, že operační systém na tomto svazku nebude možné zavést. Tento problém lze řešit pouze pomocí speciálních opatření (např. zavedením systému z diskety), a "speciální opatření" obvykle správci příliš nemilují. Není se čemu divit.

Poznámka:
Pokud jste zkušenými správci, pak možná naopak (je to spíše věc názoru) budete zavádět systém  diskety u všech serverů. Disketu lze totiž jednoduše vyjmout z šachty a bez správce (lépe řečeno - bez diskety) server nikdo nenahodí (ejhle co dokáže systém přímé zodpovědnosti!). Všechny diskety máte samozřejmě vyzálohovány a tyto zálohy (čitelně a jednoznačně popsané!) máte uloženy třeba - v trezoru.

Obecně by kořenový adresář systémového svazku neměl obsahovat žádné soubory, snad kromě standardního obrazu systému. Ten se obvykle jmenuje vmlinuz (ovšem i ten by se spíše měl nacházet v adresáři /boot). Všechny ostatní soubory by měly být uloženy v podadresářích kořenového adresáře, obvykle tímto způsobem:

/bin
Příkazy potřebné pro zavedení systému a pro práci běžných uživatelů po jeho zavedení.

/sbin
Stejné jako u adresáře /bin. Příkazy  tomto podadresáři ale nejsou určeny běžným uživatelům, i když je též mohou použít (je-li to nutné nebo možné).

/etc
Konfigurační soubory specifické pro daný počítač.

/root
Domovský adresář superuživatele.

/lib
Sdílené knihovny pro programy v kořenovém souborovém systému.

/lib/modules
Zaváděcí moduly jádra systému (zvláště ty, které jsou potřeba pro zavedení systému při zotavení po neočekávaných událostech (např. sí"ové ovladače a ovladače pro souborový systém).

/dev
Speciální soubory.

/tmp
Dočasné soubory. Programy, které se spouští až po zavedení systému, by správně měly používat místo adresáře /tmp adresář /var/tmp, protože je velmi pravděpodobné, že leží na větším disku.

/boot
Soubory, jež používá zavaděč operačního systému (angl. bootstrap loader), např. LILO. Je dobré mít v tomto podadresáři uloženy obrazy jádra (místo toho, aby se ukládaly přímo v kořenovém adresáři). V případě, že jich máte víc, může obsah adresáře /boot značně narůst. V tom případě bude lepší mít jej v samostatném souborovém systému. Tím se také zajistí, že obrazy jádra budou uloženy na prvních 1024 cylindrech disku IDE.

/mnt
Přípojné místo pro dočasná připojení dalších systémů souborů správcem systému. Nepředpokládá se, že by tento adresář využívaly pro automatická připojení souborových systémů programy. Adresář /mnt může být rozdělen na podadresáře (např. /mnt/dosa pro disketovou mechaniku používanou  souborovém systému MS.DOS, /mnt/exta pro tutéž mechaniku využívanou v souborovém systému ext2 a podobně).

Poznámka:
Unix ani Linux totiž "nepřipojují" disky tím způsobem, že je naoko vyčlení jako samostatná zařízení a přidělí jim písmenné označení disku (strašlivý to zlozvyk, někdy mám chuť volat po jakési obdobě Inkvizice). Nikoliv, ve světě Unixu nebo Linuxu, si toto zařízení (pevný disk, disketovou mechaniku, CD-mechaniku) jednoduše "přesměrujete" do adresáře a prostřednictvím tohoto adresáře k ní přistupujete. Výhody jsou nabíledni, za všechny uvedu alespoň přenositelnost těchto zařízení nebo jejich aplikací (už chápete, proč Inkvizici?:-))) Jestliže totiž aplikace pracuje tak, že volá své soubory z (například:) d:\adresář\podadresář , pak ji do jiného systému (počítače) "přenesete" (mám na mysli přenést již nainstalovanou aplikaci s přenosným diskem) pouze tak, že tento "přenosný" disk se bude ještě navíc tvářit jako disk "d". oč jednodušší (a prostší) je "připojení" skrze adresář /mnt/hdb , že? Názorná ukázka, k čemu může sloužit jednotná struktura adresářů.

Adresář /etc
Adresář /etc obsahuje mnoho souborů. Některé z nich jsou standardní a jsou součástí každé distribuce Linuxu. Pokud jde o ostatní, měli byste nejdřív zjistit, ke kterému programu patří, a pak si přečíst manuálové stránky k tomuto programu. V adresáři /etc je uloženo také hodně síťových konfiguračních souborů, které jsou popsány buď přímo v manuálových stránkách k jádru Linuxu nebo je jejich popis u příslušných aplikací.

/etc/rc, /etc/rc.d a /etc/rc?.d
Jedná se o skripty a adresáře skriptů, které se spouští při startu, nebo v případě, že se mění úroveň běhu systému. Podrobnější informace najdete manuálových stránkách procesu init.

/etc/passwd
Databáze uživatelů systému s položkami, v nichž je uloženo uživatelské jméno i skutečné jméno uživatele, domovský adresář, šifrované heslo a některé další informace. Formát je popsán v manuálové stránce pro program passwd.

/etc/fdprm
Tabulka parametrů disketové jednotky. Popisuje jak vypadají různé formáty disket. Používá ji program setfdprm. Víc informací uvádí manuálová stránka programu setfdprm.

/etc/fstab
Seznamy souborových systémů připojovaných automaticky při startu příkazem mount .a (skriptem /etc/rc, nebo odpovídajícím souborem, jenž se spouští při startu systému). V systému Linux obsahuje rovněž informace o odkládacích oblastech -swapie, které automaticky používá příkaz swapon .a. Podrobnější informace naleznete například v manuálové stránce k příkazu mount.

/etc/group
Soubor podobný souboru /etc/passwd, ale místo uživatelů popisuje pracovní skupiny. Podrobnější informace viz manuálová stránka pro soubor group.

/etc/inittab
Konfigurační soubor procesu init.

/etc/issue
Soubor obsahuje výstup programu getty, který se zobrazí před výzvou pro přihlášení uživatele. Obvykle obsahuje stručný popis systému nebo uvítací hlášku. Obsah určuje správce systému.

/etc/magic
Konfigurační soubor programu file. Obsahuje popisy různých formátů souborů, podle kterých pak program file tyto typy rozpoznává. Více informací najdete v manuálových stránkách pro magic a file.

/etc/motd
Tzv. -zpráva pro tento den (angl. message of the day) (automatický výstup na terminál uživatele po úspěšném přihlášení do systému. Obsah volí správce systému. Často se využívá pro předávání informací (např. upozornění na plánovaná zastavení systému apod.) všem uživatelům systému.

/etc/mtab
Seznam aktuálně připojených souborových systémů. Jeho obsah po zavedení systému a připojení určených souborových systémů prvotně nastavují inicializační skripty, v běžném provozu pak automaticky příkaz mount. Používá se v případech, kdy je potřeba zjistit, které souborové systémy jsou připojené, např. při zadání příkazu df.

/etc/shadow
Soubor tzv. -stínových přístupových hesel (shadow password) uživatelů v systémech, které mají nainstalovanou podporu systému stínových hesel. Kódovaná stínová hesla jsou z bezpečnostních důvodů přeneseny ze souboru /etc/passwd do souboru /etc/shadow, který může číst pouze superuživatel. Snižuje se tak pravděpodobnost odhalení některého z přístupových hesel při průniku do systému.

/etc/login.defs
Konfigurační soubor příkazu login.

/etc/printcap
Podobně jako u souboru /etc/termcap, až na to, že soubor je určený pro tiskárny. Odlišná je i jeho syntaxe.

/etc/profile, /etc/csh.login, /etc/csh.cshrc
Soubory spouštěné při přihlášení uživatele nebo při startu systému interprety příkazů Bourne shell nebo C shell. Umožňují správci systému stanovit globální nastavení stejné pro všechny uživatele. Viz manuálové stránky k příslušným interpretům příkazů.

/etc/securetty
Soubor identifikuje zabezpečené terminály, tedy terminály, ze kterých se může přihlašovat superuživatel. Typicky je v seznamu uvedena pouze virtuální konzola, takže je nemožné (nebo přinejmenším velmi těžké) získat oprávnění superuživatele přihlášením se po modemu nebo ze sítě.

/etc/shells
Soubor, jenž uvádí seznam důvěryhodných interpretů příkazů. Příkaz chsh umožňuje uživatelům změnit shell spuštěný při přihlášení, a to pouze na některý z interpretů uvedený v tomto souboru. Proces ftpd, jenž běží na hostitelském počítači a poskytuje služby FTP pro klientské počítače, rovněž kontroluje, zda je uživatelův příkazový interpret uveden v tomto souboru a nedovolí připojit se klientům, jejichž shell v tomto seznamu uveden není.

/etc/termcap
Databáze vlastností terminálu. Popisuje, kterými -escape, sekvencemi se řídí různé typy terminálů. Každý program je napsán tak, že místo přímého výstupu -escape sekvence, jež by fungovala pouze s konkrétním typem terminálu, hledá v tabulce /etc/termcap sekvenci, která odpovídá tomu, co chce program na terminálu zobrazit. Pak může většina programů správně obsluhovat většinu typů terminálů. Více informací uvádí manuálové stránky pro termcap, curs-termcap a terminfo.

Adresář /dev
Adresář /dev obsahuje speciální soubory pro všechna zařízení. Speciální soubory jsou pojmenované podle určitých konvencí. Tyto konvence jsou samozřejmě podrobně popsány, jejich popis můžete nalézt např. v Linuxové dokumentaci o Seznamu zařízení (je to standardní kapitola každé dokumentace o Linuxu). Speciální soubory se vytvářejí v průběhu instalace operačního systému, v běžném provozu pak skriptem /dev/MAKEDEV. Podobný je skript /dev/MAKEDEV.local. Ten upravuje a používá správce systému, když vytváří čistě lokální speciální soubory a linky. Lokální speciální soubory jsou ty, které nejsou vytvořené standardním postupem pomocí skriptu MAKEDEV, typicky například speciální soubory pro některé nestandardní ovladače zařízení.

Adresář /usr
Adresář /usr bývá často dost velký, protože jsou v něm instalované všechny programy. Všechny soubory v systému /usr jsou obvykle instalované přímo z distribuce systému Linux. Všechny další lokálně instalované programy se ukládají do adresáře /usr/local. To umožňuje správci systému instalovat vyšší verze Linuxu z nové verze distribuce nebo i úplně jiné distribuce operačního systému bez toho, že by bylo potřeba současně instalovat všechny programy znovu. Některé z podadresářů adresáře /usr jsou popsány níže. Podrobnější popis samozřejmě naleznete ve standardu FSSTND.

/usr/X11R6
Všechny soubory systému X Window. Soubory pro X nejsou integrální součástí operačního systému z důvodů zjednodušení vývoje a instalace X. Adresářová struktura /usr/X11R6 je podobná stromu, který je vytvořený pod adresářem /usr samotným.

/usr/X386
Podobně jako u předchozího adresáře /usr/X11R6, ale pro systém X11 Release 5.

/usr/bin
Zde se nacházejí téměř všechny uživatelské příkazy. Některé další příkazy jsou uloženy v adresáři /bin nebo /usr/local/bin.

/usr/sbin
Obsahuje ty příkazy pro správu systému, které nejsou potřeba přímo v souborovém systému -root (zde je například uložená převážná většina serverových programů).

/usr/man, /usr/info, /usr/doc
Manuálové stránky, informační dokumenty o projektu GNU, případně různé jiné soubory s dokumentací.

/usr/include
Hlavičkové soubory pro programovací  C. Z důvodů zachování konzistence by měly být spíš v adresáři /usr/lib, ale z historických důvodů jsou umístěny ve zvláštním adresáři.

/usr/lib


Datové soubory pro programy a subsystémy, které se nemění. Jsou zde rovněž uloženy některé globální konfigurační soubory. Jméno lib je odvozeno od anglického slova -library (knihovna). Původně totiž byly  adresáři /usr/lib uloženy knihovny podprogramů.

 

/usr/local
Místo pro lokálně instalovaný software a další soubory.

Adresář /var
Systém /var obsahuje data, která se při běžném provozu systému mění. Soubory jsou specifické pro každý systém, a proto se data mezi jinými počítači v síti nesdílejí.

/var/catman
Vyrovnávací paměť pro manuálové stránky, které jsou formátovány na požádání. Zdroje pro tyto manuálové stránky jsou obvykle uložené v adresáři /usr/man/man*. Manuálové stránky v předem formátované verzi jsou uložené v adresáři /usr/man/cat*. Manuálové stránky je běžně třeba při prvním prohlížení formátovat. Formátované verze jsou pak uložené právě v adresáři /var/catman. Další uživatel, který si chce stejné stránky prohlížet, tak nemusí čekat na jejich opakované formátování. (Soubory v uvedeném adresáři /var/catman je obvykle potřeba mazat, stejně jako dočasné soubory v adresářích /tmp a /var/tmp.)

/var/lib
Soubory, které se při normálním provozu systému mění.

/var/local
Měnící se data pro programy instalované v adresáři /usr/local (tj. programy instalované správcem systému). Upozorňujeme, že lokálně instalované programy by měly používat i ostatní podadresáře nadřazeného adresáře /var, např. /var/lock.

/var/lock
Soubory tzv. zámků. Většina programů dodržuje určitou konvenci a vytváří v adresáři /var/lock zámky. Tím dávají ostatním programům najevo, že dočasně využívají některé zařízení nebo soubor. Jiné programy, které by chtěly stejné zařízení či soubor ve stejném okamžiku používat, se o to nebudou pokoušet.

/var/log
Adresář obsahuje tzv. log-soubory různých programů. Například program login zaznamenává (do souboru /var/log/wtmp) všechna přihlášení a odhlášení uživatelů systému, program syslog ukládá (do souboru /var/log/messages) všechny hlášky jádra systému a systémových programů. Velikost souborů v adresáři /var/log dost často nekontrolovaně roste. Proto se musí v pravidelných intervalech mazat. Ne, řekněme raději "rotovat". Blíže se dozvíte v man logrotate:-)

/var/run
Adresář, do něhož se ukládají soubory obsahující informace o systému, jež platí až do jeho dalšího zavedení. Tak například soubor /var/run/utmp obsahuje informace o současně přihlášených uživatelích systému.

/var/spool
Adresáře pro elektronickou poštu, systém -news, tiskové fronty a další subsystémy, které využívají metodu -spoolij a princip řazení úloh do fronty. Každý z těchto subsystémů má v tomto adresáři svůj vlastní podadresář, např. poštovní schránky uživatelů jsou uložené v podadresáři /var/spool/mail.

/var/tmp
Do adresáře /var/tmp se ukládají velké dočasné soubory a dočasné soubory, které budou existovat déle než ty, které se ukládají do adresáře /tmp. (Avšak správce systému by měl dbát na to, aby stejně jako v adresáři /tmp, ani v adresáři /var/tmp nebyly uloženy velmi staré dočasné soubory.)

Adresář /proc
Systém souborů /proc je vlastně imaginárním souborovým systémem. Ve skutečnosti na disku neexistuje. Místo toho jej  paměti vytváří jádro systému. Ze systému souborů /proc lze získávat různé aktuální informace o systému (původně o procesech (z toho je odvozeno jeho jméno). Některé z významnějších souborů a adresářů jsou popsány níže. Samotný adresář /proc je podrobněji popsán na manuálové stránce proc. Pokud si budete jádro (kernel) překládat sami, nezapomeňte začlenit podporu pro /proc.

/proc/1
Adresář s informací o procesu  1. Každý z procesů má v adresáři /proc vlastní podadresář, jehož jméno je stejné, jako identifikační číslo procesu.

/proc/cpuinfo
Různé informace o procesoru. Například typ, výrobce model, atd.

/proc/devices
Seznam ovladačů zařízení konfigurovaných pro aktuálně běžící jádro systému.

/proc/dma
Informuje o tom, které kanály DMA jsou právě využívány.

/proc/filesystems
Souborové systémy konfigurované v jádru systému.

/proc/interrupts
Informuje o tom, která přerušení jsou využívána, i o historii žádostí o využití každého z nich.

/proc/ioports
Informuje o tom, který z vstupně-výstupních portů se momentálně využívá.

/proc/kcore
Obraz fyzické paměti systému. Má velikost odpovídající velikosti fyzické paměti systému. Ve skutečnosti ale samozřejmě nezabírá takovéto množství paměti, protože jde o soubor generovaný na požádání, tedy pokaždé jenom v okamžiku, kdy k němu různé programy přistupují. Uvědomte si, že soubory souborového systému /proc nezabírají ve skutečnosti (než je zkopírujete na nějaké jiné místo na disku) vůbec žádný diskový prostor.

/proc/kmsg
Výstupní hlášení jádra systému. Zde uložená hlášení využívá i program syslog.

/proc/ksyms
Tabulka symbolů jádra systému.

/proc/loadavg
Statistika zatížení systému (tři celkem nic neříkající indikátory toho, kolik práce systém momentálně má.

/proc/meminfo
Informace o využití paměti, jak fyzické, tak virtuální (swap).

/proc/modules
Informuje o tom, které moduly jádra jsou právě zavedeny v paměti.

/proc/net
Informace o stavu síťových protokolů.

/proc/self
Symbolický link do adresáře procesů toho programu, který zrovna přistupuje k souborovému systému /proc. Když k systému souborů /proc současně přistupují dva různé procesy, budou mít přidělené dva různé linky. Tímto způsobem se mohou programy pohodlně a jednoduše dostat k vlastnímu adresáři.

/proc/stat
Různé statistiky týkající se systému. Např. počet chyb stránkování během zavádění systému a podobné.

/proc/uptime
Informuje o tom, jak dlouho systém běží.

/proc/version
Verze jádra systému.

Většina výše popsaných souborů má textovou formu. Jsou tedy celkem dobře čitelné pomocí standardních nástrojů. Avšak velmi často jsou formátovány takovým způsobem, že informace  nich obsažené jsou pro běžného uživatele na pohled dost těžce stravitelné. Proto existuje mnoho příkazů, které (kromě toho, že čtou informace obsažené v souborech systému /proc, upravují jejich formát do srozumitelnější podoby. Tak například program free čte data ze souboru /proc/meminfo, převádí velikost v bajtech na kilobajty a přidá něco málo dalších informací o využití paměti.

Literatura:

  1. Autorův osobní archiv

  2. Linux - Dokumentační Projekt, 1998 Computer Press

  3. Distribuce Linux RedHat 7.1 CZ

 

Michal Vymazal
www.linuxservices.cz