Co znamená Vše je soubor v Linuxu?
Jednou z definujících funkcí Linuxu a dalších operačních systémů typu UNIX je to, že "vše je soubor". Jedná se o zjednodušení, ale pochopení toho, co to znamená, vám pomůže pochopit, jak funguje Linux.
Mnoho věcí na Linuxu se objevuje ve vašem souborovém systému, ale nejsou vlastně soubory. Jsou to speciální soubory, které představují hardwarová zařízení, systémové informace a další věci - včetně generátoru náhodných čísel.
Tyto speciální soubory mohou být umístěny v pseudo nebo virtuálních souborových systémech, jako je například / dev, který obsahuje speciální soubory představující zařízení a / proc, které obsahují speciální soubory představující systémové a procesní informace.
/ proc
Například, řekněme, že chcete najít informace o CPU. Adresář / proc obsahuje speciální soubor - / proc / cpuinfo - který obsahuje tyto informace.
Nepotřebujete speciální příkaz, který vám sděluje informace o CPU - stačí přečíst obsah tohoto souboru pomocí libovolného standardního příkazu, který pracuje s prostými textovými soubory. Můžete například použít příkaz cat / proc / cpuinfo vytisknout obsah tohoto souboru na terminál - tisk informací o CPU do terminálu. Můžete dokonce otevřít / proc / cpuinfo v textovém editoru a zobrazit jeho obsah.
Nezapomeňte, že / proc / cpuinfo ve skutečnosti není textovým souborem obsahujícím tyto informace - Linuxové jádro a souborový systém proc odhalují tyto informace jako soubor. To nám umožňuje používat známé informace pro prohlížení a práci s informacemi.
Adresář / proc obsahuje také podobné soubory, například:
- / proc / uptime - vysvětluje uptime Linuxového jádra - jinými slovy, jak dlouho byl systém zapnutý bez vypnutí.
- / proc / version - zobrazí verzi vašeho jádra Linuxu.
/ dev
V adresáři / dev najdete soubory představující zařízení - stejně jako soubory, které představují další zvláštní věci. Například / dev / cdrom je vaše jednotka CD-ROM. / dev / sda představuje váš první pevný disk, zatímco / dev / sda1 představuje první oddíl na prvním pevném disku.
Chcete připojit disk CD-ROM? Spusťte příkaz mount a zadejte / dev / cdrom jako zařízení, které chcete připojit. Chcete rozdělit první pevný disk? Spusťte nástroj pro rozdělení disků a zadejte / dev / sda jako pevný disk, který chcete upravit. Chcete naformátovat první diskový oddíl na prvním disku? Spusťte příkaz pro formátování a informujte jej, aby formátoval / dev / sda1.
Jak vidíte, vystavení těchto zařízení jako součásti souborového systému má své výhody. Souborový systém poskytuje konzistentní "jmenný prostor", který mohou používat všechny aplikace pro adresování a přístup k zařízením.
/ dev / null, / dev / random a / dev / nula
Souborový systém / dev neobsahuje pouze soubory, které představují fyzická zařízení. Zde jsou tři nejpozoruhodnější speciální zařízení, která obsahuje:
- / dev / null - Vyřazuje všechna data zapsaná do něj - přemýšlejte o tom jako o koši nebo černé díře. Pokud jste někdy viděli komentář, který by vám říkal, abyste odeslali stížnosti na / dev / null - to je podivný způsob, jak říkat "házet je do koše".
- / dev / random - Produkuje náhodnost pomocí šumu v prostředí. Je to generátor náhodných čísel, do kterého se můžete zapojit.
- / dev / zero - vytváří nuly - konstantní proud nul.
Pokud myslíte na tyto tři soubory, neuvidíte pro ně použití. Místo toho myslet na ně jako na nástroje.
Například příkazy Linux standardně vytvářejí chybové zprávy a další výstupy, které tisknou na standardní výstup, obvykle terminál. Pokud chcete spustit příkaz a jeho výstup se nestará, můžete tento výstup přesměrovat na / dev / null. Přesměrování výstupu příkazu na / dev / null jej okamžitě odmítne. Namísto toho, aby každý příkaz implementoval svůj vlastní "tichý režim", můžete tuto metodu použít libovolným příkazem.
command> / dev / null
Pokud jste chtěli zdroj náhodnosti - řekněme, pro generování šifrovacího klíče byste nemuseli psát vlastní generátor náhodných čísel - můžete použít / dev / random.
Chcete-li obsah pevného disku vymazat zápisem 0, nepotřebujete speciální nástroj určený k nulování jednotky - můžete použít standardní nástroje a / dev / zero. Např dd příkaz čte z místa a zapíše do jiného umístění. Následující příkaz bude číst nuly z / dev / zero a zapisovat je přímo na první oddíl pevného disku na vašem systému a zcela vymazat jeho obsah.
(Varování: Tento příkaz vymaže všechna data v první oblasti, pokud ji spustíte. Tento příkaz spusťte pouze v případě, že chcete zničit data.)
dd pokud = / dev / nula = / dev / sda1
Zde používáme dd se speciálními soubory (/ dev / zero a / dev / sda1), ale také jsme mohli použít dd pro čtení a zápis do aktuálních souborů. Stejný příkaz funguje jak pro manipulaci s přístroji přímo, tak pro práci se soubory.
Vyjasnění
V praxi je přesnější říkat, že "vše je proud bajtů" než "vše je soubor". / Dev / random není soubor, ale určitě je to proud bajtů. A i když tyto věci nejsou technicky soubory, jsou dostupné v systému souborů - souborový systém je univerzální "jmenný prostor", kde je vše dostupné. Chcete se dostat k generátoru náhodných čísel nebo číst přímo ze zařízení? Naleznete oba v systému souborů; žádná jiná forma adresování není potřeba.
Samozřejmě, některé věci nejsou vlastně soubory - procesy běžící ve vašem systému nejsou součástí souborového systému. "Vše je soubor" je nepřesné, ale spousta věcí se chová jako soubory.