Mit jelent a Linux minden fájlja?
A Linux és más UNIX-szerű operációs rendszerek egyik meghatározó jellemzője, hogy „minden fájl.” Ez egy túlzott egyszerűsítés, de megértése, hogy mit jelent, segít megérteni, hogyan működik a Linux.
A Linux rendszerben sok dolog jelenik meg a fájlrendszerben, de ezek valójában nem fájlok. Speciális fájlok, amelyek hardvereszközöket, rendszerinformációt és egyéb dolgokat képviselnek - beleértve a véletlenszám generátort is.
Ezek a speciális fájlok pszeudo vagy virtuális fájlrendszerekben, például a / dev fájlban találhatók, amelyek speciális fájlokat tartalmaznak, és / proc, amely speciális fájlokat tartalmaz, amelyek a rendszer és a folyamatinformációkat képviselik.
/ proc
Tegyük fel például, hogy információt szeretne találni a CPU-ról. A / proc könyvtár tartalmaz egy speciális fájlt - / proc / cpuinfo -, amely tartalmazza ezt az információt.
Nincs szükség speciális parancsra, amely megmondja a CPU-adatait - csak olvassa el a fájl tartalmát bármely szabványos parancs segítségével, amely egyszerű szöveges fájlokkal működik. Például használhatja a parancsot macska / proc / cpuinfo a fájl tartalmának kinyomtatása a terminálra - a CPU-információk nyomtatása a terminálra. Még a szöveges szerkesztőben is megnyithatja a / proc / cpuinfo tartalmat.
Ne feledje, hogy a / proc / cpuinfo valójában nem az ilyen információkat tartalmazó szövegfájl - a Linux rendszermag és a proc fájlrendszer ezt az információt fájlként teszi ki nekünk. Ez lehetővé teszi számunkra, hogy ismerős eszközöket használjunk az információk megtekintésére és kezelésére.
A / proc könyvtár más hasonló fájlokat is tartalmaz, például:
- / proc / uptime - Linux rendszermagjának üzemidejét - más szóval, mennyi ideig tartott a rendszer bezárása nélkül.
- / proc / version - Megadja a Linux rendszermag verzióját.
/ dev
A / dev könyvtárban olyan fájlokat talál, amelyek eszközöket képviselnek, valamint olyan fájlokat, amelyek más speciális dolgokat képviselnek. Például a / dev / cdrom a CD-ROM meghajtó. / dev / sda képviseli az első merevlemezt, míg az / dev / sda1 az első merevlemez első partícióját jelenti.
Szeretné csatlakoztatni a CD-ROM-ot? Futtassa a mount parancsot, és adja meg a / dev / cdrom-ot a csatlakoztatni kívánt eszközként. Szeretné megosztani az első merevlemezt? Futtasson egy lemezpartíciós segédprogramot, és adja meg a szerkeszteni kívánt merevlemezt a / dev / sda-nak. Szeretné az első merevlemez első partícióját formázni? Futtassa a formázási parancsot, és mondja el, hogy formázza a / dev / sda1 formátumot.
Mint látható, az ilyen eszközöknek a fájlrendszer részeként történő bemutatása előnyei vannak. A fájlrendszer következetes „névteret” biztosít, amelyet minden alkalmazás használhat az eszközök címzéséhez és eléréséhez.
/ dev / null, / dev / random és / dev / nulla
A / dev fájlrendszer nem csak olyan fájlokat tartalmaz, amelyek fizikai eszközöket képviselnek. Íme a legjelentősebb speciális eszközök közül három:
- / dev / null - Eldobja az összes rá írt adatot - gondoljon rá, mint egy szemetet vagy fekete lyukat. Ha valaha lát egy megjegyzést, amely arra kéri, hogy küldjön panaszokat a / dev / null-nak - ez egy geeky módja annak, hogy azt mondja: „dobja őket a szemetetbe.”
- / dev / random - Véletlenszerűséget hoz létre a környezeti zaj felhasználásával. Ez egy véletlen számgenerátor, amellyel belehelyezhet.
- / dev / zero - Nullákat állít elő - állandó nullák.
Ha úgy gondolja, hogy ezek a három fájl fájlok, akkor nem fogja használni őket. Ehelyett gondolj rájuk eszközökként.
Például alapértelmezés szerint a Linux parancsok hibaüzeneteket és más kimenetet termelnek, amelyeket a szabványos kimenetre, általában a terminálra nyomtatnak. Ha parancsot szeretne futtatni, és nem érdekli a kimenet, akkor a kimenetet átirányíthatja a / dev / null értékre. A parancs kimenetének átirányítása / dev / null-ra azonnal elveti azt. Ahelyett, hogy minden parancs végrehajtaná saját „csendes módját”, ezt a módszert bármilyen parancs segítségével használhatja.
parancs> / dev / null
Ha véletlenszerűséget akarsz - mondjuk egy titkosítási kulcs létrehozásához, nem kell saját véletlenszám generátort írni - használhatod / dev / random.
A merevlemez tartalmának törléséhez 0-ra írva, nincs szükség speciális segédprogramra a meghajtó nullázására - használhatná a szokásos segédprogramokat és / dev / nullát. Például a dd parancs egy helyről olvas, és egy másik helyre ír. A következő parancs nullákat olvasna a / dev / nullából, és közvetlenül a rendszer első merevlemez-partíciójába írja, és teljesen törli a tartalmát.
(Figyelem: Ez a parancs az első partíción lévő összes adatot törli, ha futtatja. Csak akkor futtassa ezt a parancsot, ha az adatokat meg akarja semmisíteni.)
dd if = / dev / nulla = / dev / sda1
Itt dd-t használunk speciális fájlokkal (/ dev / nulla és / dev / sda1), de a dd-t is használhatjuk az aktuális fájlok olvasására és írására. Ugyanez a parancs működik mind az eszközök közvetlen kezelésére, mind a fájlok kezelésére.
derítés
A gyakorlatban pontosabb azt mondani, hogy „minden bájtáram”, mint a „minden fájl.” / Dev / random nem egy fájl, de biztosan bájtáram. És bár ezek a dolgok technikailag nem fájlok, hozzáférhetők a fájlrendszerben - a fájlrendszer egy univerzális „névtér”, ahol minden elérhető. Szeretné elérni a véletlenszám generátort, vagy közvetlenül egy eszközről olvasni? Mindkettő megtalálható a fájlrendszerben; más címzésre nincs szükség.
Természetesen egyes dolgok valójában nem fájlok - a rendszeren futó folyamatok nem képezik a fájlrendszer részét. „Minden egy fájl” pontatlan, de sok dolog fájlként viselkedik.