UNIX shell tutorial

2. A Unix filerendszer

A UNIX legfontosabb alapfogalma a file, ami egy struktúrálatlan byte-sorozat. A DOS-szal összehasonlítva, a Unix filerendszere sokkal egységesebb: felfogása szerint "minden file". Ez azt jelenti, hogy a felhasználó file-jai, a rendszer könyvtárai és a rendszerhez csatlakoztatott hardver eszközök mint file-ok egységesen kezelhetőek.

A file-nevek maximális hossza általában 255 karakter. A kisbetűk és nagybetűk különböznek, szinte minden karakter használható. Azok a file-ok amelyeknek a neve pont karakterrel kezdődik rejtett file-ok. Ezek általában adminisztrációs és konfigurációs információkat tartalmaznak. Minden file-nak van tulajdonosa és egy felhasználói csoporthoz is tartozik. A file-okhoz olvasási, írási, végrehajtási jogok tartoznak, melyek beállíthatók a tulajdonos, a csoportja és mindenki más számára.

A Unix filerendszer hierarchikus felépítésű, a file-ok könyvtarakban vannak tárolva. Egy könyvtárból további ún. alkönyvtárak nyílhatnak, amelyek ugyancsak tartalmazhatnak további file-okat és alkönyvtárakat, és így tovább — egyetlen, közös gyökerű fastruktúrát alkotva.

A Unix filerendszerben több kitüntetett pont létezik a felhasználók számára:

2.1. Általános könyvtárnevek:

/bin A bináris programok könyvtára
/dev A különféle eszközök könyvtára
/etc Egyéb rendszerfile-ok, rendszerint a rendszeradminisztrációs file-ok.
A legtöbb esetben itt van a jelszavakat tároló file is.
/mnt Az ideiglenesen "felakasztott" eszközök becsatolási pontja (lásd mount utasítás)
/usr Felhasználói programok, forrásszövegek, könyvtárak
/lib Fontosabb függvénykönyvtárak - ezeket csak a programozók használják.
/usr/bin Végrehajtható programok (főként segédprogramok)
/usr/lib Utasításkönyvtárak programozóknak
/usr/src Forrásnyelvű szövegek
/usr/local Helyileg telepített programok és tartozékai, egyébb nyilvános dolgok
/usr/local/bin Helyileg telepített futtathatók
/usr/man Az online dokumentáció, amelyet a man paranccsal tudunk megjeleníteni.

2.2. Könyvtárkezelő utasítások:

2.3. Filekezelő parancsok:

2.4. Egy Unix partíció belső szerkezete

Az alábbiakban leírtak nagy vonalakban mutatják meg a Unix- és unix-szerű filerendszerek felépítését. A konkrét részletek már erősen függenek a használt filerendszertől és hardware-architektúrától.

Az első blokk (SUPERBLOCK) tartalmazza a filerendszer adatait, a belső táblák adatait.

Az inode tábla. Az inode név az index-node rövidítése, arra utal, hogy a filerendszerben az állományok jellemzőit tartalmazó inode-okat a rendszerprogramok indexkent használjak.

Az inode tartalmazza az adott file-ra vonatkozó összes lényeges információt:

Nem tartalmazza viszont a szóban forgó állomány nevét, ezt a katalógusfile tartalmazza. Minden könyvtárhoz tartozik egy speciális tartalmú file. Ebben az ún. katalógusfile-ban minden file-hoz tartozik egy rekord, ami a file inode számát és a nevét tartalmazza.

2.5. Láncok létrehozása

A filerendszer egyik sajátossága a láncolás (link). Ez a mechanizmus arra szolgál, hogy egy adott állományt több néven is el lehessen érni. A Unix rendszer kétféle láncolási eljárást ismer, a merev és a lágy láncolást (hard- ill. soft link). A merev láncolás legfőbb jellemzője, hogy a láncolt file teljesen egyenérékű az eredetivel. Ha például van egy állományunk text néven, akkor az ln parancs segítségével elérhetjük, hogy mondjuk szöveg néven is hivatkozhassunk rá.

$ ln text szöveg

Ekkor a láncolt állományok láncszáma (link count) egyel nagyobb értek.

A láncolás mechanizmusa

Amikor egy file-t linkelünk, a megfelelő katalógusba egy új bejegyzést hozunk létre, ami egy már létező és más néven már hivatkozott inode-ra mutat. Az inode táblában növeljük a láncszámot. Tehát iylenkor a file-hoz magához nem nyúlunk. Láncolt file törlésekor töröljük az adott névhez tartozó bejegyzést a megfelelő katalógusfile-ban és az inode táblában a megfelelő rekordban eggyel csökkentjük a láncszámot. Ha a láncszám 1, akkor töröljük a file-t és a hozza tartozó bejegyzést az inode táblában illetve a katalógusfile-ban.

A szimbolikus lánc vagy lágy lánc

Lényege, hogy a szimbolikus link katalógus bejegyzése nem az inode-jára mutat, hanem egy olyan különleges file-ra, ami a láncolt file nevét tartalmazza. A munkakatalógusból a következő utasítást kiadva:

$ ln -s /usr/lib/sendmail.cf sendmail.cf

ott egy sendmail.cf file keletkezik. Ekkor a láncszám nem változik, a file típusnál egy l van, a nevénél pedig a következő található:

sendmail.cf -> /usr/lib/sendmail.cf

Ha olvasni akarjuk a file-t, akkor az előzőekben leírt módon eljutunk a /users/demo katalógusfile sendmail.cf bejegyzéséhez, észrevesszük, hogy egy szimbolikus linkről van szó, az operációs rendszer ekkor megnyitja azt a bizonyos file-t, ami a láncolt nevet tartalmazza, ami a fenti példában a /usr/lib/sendmail.cf . Ezt a már ismert módon megkeresi és megnyitja.

2.6. Mountolás

Mountolásnak (csatolásnak) nevezzük azt a tevékenységet, amikor egy különálló filerendszert becsatolunk egy már meglévőhöz. (pl. egy floppyn levő filerendszert, vagy akár egy távoli számítógép megosztott filerendszerét) Ilyenkor a becsatolandó filerendszer a meglevő filerendszer egy pontján (ez az ún. mount-point, csatolási pont) csatlakozik egy könyvtárhoz, és innentől a teljes fa-struktúra egy oldalágaként érhető el.


Egy floppy lemezt csatolunk be a baloldali unix-szerver filerendszerébe a /mnt/floppy ponthoz.
A csatolás eredményeképp a floppy-n levő /otthonrol/scriptek/proba.sh file a unix-szerveren a /mnt/floppy/otthonrol/scriptek/proba.sh néven elérhetővé válik.

A fentieknek létezik az ellentétes művelete is, amikor egy előzőleg már csatolt filerendszert-t umountolunk, azaz lecsatolunk a struktúrából.