Nemrégiben találkoztam néhány linux paranccsal, amikor bejelentkeztem az ügyfelem webhelyére, hogy letöltsem a tevékenység naplófájlját, és tanulmányozza a linux fájltípusokat, és egyszerű parancsot, hogy megtudja, mi a fájltípusok a Linux operációs rendszerben.
A Linux négy alapvető fájltípust használ:
- általános fájlok
- könyvtárak
- szimbolikus linkek
- blokk és karakteres eszközfájlok
Egy fájl típusát az ls -l parancs kiadásával és a kimenet minden sorának első karakterének elolvasásával határozhatja meg.
Az ls parancs tipikus kimenete a következő:
$ ls -l
total 8
-rw-r-r- 1 root root root 22 okt 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 május 5 1998 blockdev
crw-rw-rw-rw- 2 root root root 5, 0 május 5 1998 characterdev
drwxr-xr-xr-x 2 root root 4096 okt 6 15:33 subdir
lrwxrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolic -> anormalfile
Ordinary files begin with a dash (-), directories begin with d, symbolic links begin with the character l, block devices are prefaced with the character b, and character devices begin with the letter c.
Hagyományos fájlok
Egy közönséges fájl bármilyen adatból állhat, beleértve a futtatható programokat is. A Linux fájlrendszerében a legtöbb fájl ilyen típusú.
Könyvtárak
A könyvtár egy olyan fájl, amely más fájlokat és könyvtárakat tartalmaz, és mutatókat biztosít rájuk.
Az irattárban lévő mappához hasonló funkciót tölt be, mivel lehetővé teszi az összetartozó fájlok szervezett csoportosítását. Míg azonban a mappák általában csak fájlokat tartalmazhatnak, a könyvtárak további, gyakran alkönyvtáraknak nevezett könyvtárakat is tartalmazhatnak.
Szimbolikus linkek
A szimbolikus – vagy lágy – link egy teljesen különálló fájl nevére és helyére mutat. Így amikor megnyitja, másolja, áthelyezi vagy más módon hivatkozik a hivatkozásra, a műveletet valójában a hivatkozott fájlon hajtja végre. Ez a különbség általában láthatatlan a felhasználó számára. Ha a hivatkozott fájlt eltávolítják vagy átnevezik, a hivatkozás megszakad, és hiba lép fel, ha megpróbálja megnyitni.
Kemény hivatkozásokat is létrehozhat. A kemény hivatkozás pontosan ugyanúgy mutat a fájlban lévő tényleges adatokra, mint egy közönséges fájl. Ezért a nevet leszámítva nincs különbség az eredeti fájl és az ugyanarra az adatra mutató hard link között, és mindkettő közönséges fájlnak tekinthető. Egy hard linket csak a linkek száma alapján lehet megkülönböztetni bármely más közönséges fájltól. A linkek száma az ls -l lista második mezőjében jelenik meg. Ha ez a szám nagyobb, mint egy, akkor tudjuk, hogy az adatokhoz további hard linkek kapcsolódnak.
Eszközfájlok
A Linux által használt összes fizikai eszközt eszközfájlok reprezentálják.
Az eszközfájlok besorolhatók karakter-speciális vagy blokk-speciális kategóriába. A karakterspeciális fájlok olyan eszközöket képviselnek, amelyek karakterenként vagy soros alapon lépnek kapcsolatba a Linuxszal. A nyomtatók és a terminálok példák az ilyen típusú eszközökre. A blokk-speciális fájlok olyan eszközöket képviselnek, mint a merevlemezek vagy floppylemezek és CD-ROM-ok, amelyek adatblokkok segítségével lépnek kapcsolatba a Linuxszal.
Az összes eszközfájl a /dev könyvtárban található – például a rendszer első floppy meghajtójához tartozó fájl a /dev/fd0.
Az eszközfájlok rendkívül hatékonyak, mert lehetővé teszik a felhasználók számára, hogy a hardvereszközökhöz, például a lemezmeghajtókhoz, modemekhez és nyomtatókhoz úgy férjenek hozzá, mintha adatfájlok lennének. Ezért könnyen mozgathat, másolhat és továbbíthat adatokat az ilyen eszközök között, gyakran anélkül, hogy speciális parancsokat vagy szintaxist kellene használnia.
Fájlnevek és elérési utak
Minden fájlhoz tartozik egy fájlnév, amely legfeljebb 256 karakter hosszú lehet. Ez a név nagy- és kisbetűk, számok és bizonyos írásjelek, például pont, kötőjel vagy aláhúzás keverékéből állhat.
Bizonyos karakterek nem használhatók fájlnevekben. Nem használhat például mezőelválasztó karaktereket – például vesszőt – vagy más, a héj számára különleges jelentéssel bíró speciális karaktereket. A nem használható speciális karakterek a következők:
! @ # $ % ^ & * ( ) { } ‘ ” \ / | ; ; < > ‘
Patanevek
Patanevek segítségével navigálhat a parancssorban a könyvtárak között. Az elérési utak használatához ismernie kell a Linux fájlrendszer könyvtárszerkezetét. A Linux fájlrendszerben a legmagasabb szintű könyvtár a gyökérkönyvtár, amelyet egy előrevágott perjel (/) jelez. A gyökérkönyvtár alatt helyezkednek el a legfelső szintű könyvtárak, amelyeket egy vagy több alkönyvtárszint követ.
A Linux-fájlrendszer állományszerkezete
A könyvtárak között relatív vagy abszolút elérési utak használatával mozoghat.
A relatív elérési útnév az aktuális könyvtárral kezdődik. Ha például a home könyvtárából a expenses könyvtárba akar váltani, akkor beírja
cd expenses
A relatív elérési utak kezdődhetnek egy fájl vagy könyvtár nevével, vagy az aktuális könyvtárra való szimbolikus hivatkozással (.) vagy a szülő könyvtárra (..), de soha nem előremenő átlóval.
Egy egyszerű példa a Linux fájlrendszerre
Az abszolút elérési név a teljes elérési utat mutatja a gyökérkönyvtárból (/). A következő paranccsal például az aktuális könyvtárból közvetlenül a gyökérkönyvtár alatt található usr könyvtárban lévő applic alkönyvtárba léphetünk:
cd /usr/applic
Inode-ok, blokkok és speciális fájlok
Inode-ok
Minden fájlhoz egyedi inode-szám tartozik. Az inode egy olyan struktúra, amely meghatározza a fájl helyét és attribútumait. Egy fájl inode-számát az ls parancs -i opciójával ellenőrizheti. A stat filename szintaxissal megtekintheti a fájl inode-ja által tartalmazott információkat. Ez a parancs kimenete (a stat results) az “results” fájl inode-jával kapcsolatos információkat jeleníti meg.
$ stat results
File: “results”
Size: 8
Filetype:
Mode: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Linkek: 1
Access: (00072.18:31:07)
Módosítva: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: 12:35:20 2000 (00077.22:40:47)
Változás: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Ebben a példában a megjelenített attribútumok között szerepel a fájltípus, a fájl mérete, a tulajdonos felhasználói azonosítója (UID), a hozzá tartozó merev hivatkozások száma, valamint a fájl létrehozásának, hozzáférésének és módosításának ideje.
Az inode nem tárolja a fájl nevét. A fájlnevek a hozzájuk tartozó inode-számokkal együtt könyvtárakban tárolódnak. A stat parancs példájában a fájl nevét a megadott filename paraméterből kapjuk.
Blokkok
A Linux fájlrendszerben a fájlok blokkokban tárolódnak, amelyek a lemezterület azonos méretű szegmensei. Általában egy blokk mérete 512 bájt és 32 KB között változik, a Linux telepítésétől függően. Egy fájl maximális mérete a fájlrendszerben használt blokkmérettől függ. Például egy ext2 fájlrendszer maximális fájlmérete 2 GB, ha 512 bájtos blokkokat használ.
A lemezrendszerek az adatokat blokkméretű darabokban kérik le, így minél nagyobb a blokkméret, annál hatékonyabb a hozzáférés. A nagy blokkok létrehozásával az a probléma, hogy pazarolja a lemezterületet. Ha például a blokkméret 4 KB, és a legtöbb fájl csak néhány bájtnyi adatot tartalmaz, akkor a 4096 bájtnyi lemezterület nagy része minden egyes fájl esetében pazarlásba megy. Ha azonban a blokkméreteket kicsivé teszi, a lemezelérés viszonylag kevésbé lesz hatékony.
Egyes parancsok, például a df, 1 KB-os blokkokban adják ki a lemezinformációkat, még akkor is, ha a telepítés más blokkméretben tárolja a fájlokat. Egyszerű módja a rendszer blokkméretének ellenőrzésének, ha a du paranccsal megjeleníti a lemezhasználatot. Ebben a példában az “m” betűvel kezdődő összes fájl lemezhasználata jelenik meg.
$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab
A példában a du parancs kimenete a lemezen lévő fájlok méretét a blokkméret lépéseiben mutatja, ami ebben az esetben 4,0 KB. Kivételt képez ez alól, ha nulla jelenik meg, ami azt jelzi, hogy a fájl teljesen üres.
Speciális fájlok
A Linux más fájltípusok mellett speciális fájlokat is használ, amelyek a rendszer által definiált fájlok, amelyek eléréskor egyedi funkciókat látnak el.
Speciális fájlok és funkcióik
Ha például meg kell szabadulnunk egy parancs nem kívánt kimenetétől, akkor a kimenetet átirányíthatjuk a /dev/null fájlba. Ebben a példában a find parancs által generált hibákat az stderr-ből a /dev/null állományba irányítja át.
$ find / -n myfile 2> /dev/null