29Jul
En av de grundläggande egenskaperna hos Linux och andra UNIX-liknande operativsystem är att "allt är en fil". Det här är en överförenkling, men förstå vad det betyder för att hjälpa dig att förstå hur Linux fungerar.
Många saker på Linux visas i ditt filsystem, men de är egentligen inte filer. De är speciella filer som representerar maskinvaruenheter, systeminformation och andra saker - inklusive en slumpmässig talgenerator.
Dessa speciella filer kan vara placerade i pseudo- eller virtuella filsystem som / dev, som innehåller speciella filer som representerar enheter och / proc, som innehåller speciella filer som representerar system- och processinformation.
/ proc
Låt oss exempelvis säga att du vill hitta information om din CPU.Katalogen / proc innehåller en speciell fil - /proc/ cpuinfo - som innehåller denna information.
Du behöver inte ett speciellt kommando som berättar för din CPU-info - du kan bara läsa innehållet i den här filen med något standardkommando som fungerar med vanliga textfiler. Till exempel kan du använda kommandot
-katt /proc/ cpuinfo för att skriva ut den här filens innehåll till terminalen - skriv ut din CPU-information till terminalen. Du kan till och med öppna /proc/ cpuinfo i en textredigerare för att se innehållet.Kom ihåg att /proc/ cpuinfo inte är en textfil som innehåller denna information - Linux-kärnan och proc-filsystemet utsätter denna information för oss som en fil. Detta gör det möjligt för oss att använda bekanta verktyg för att se och arbeta med informationen.
/ proc-katalogen innehåller också andra liknande filer, till exempel:
- /proc/ uptime - Visar uppehållet för din Linux-kärna - med andra ord hur länge ditt system har varit på utan att stänga av.
- /proc/ version - Visar versionen av din Linux-kärna.
/ dev
I / dev-katalogen hittar du filer som representerar enheter - liksom filer som representerar andra speciella saker. Till exempel är /dev/ cdrom din CD-ROM-enhet. /dev/ sda representerar din första hårddisk, medan /dev/ sda1 representerar den första partitionen på din första hårddisk.
Vill du montera din CD-ROM?Kör mount-kommandot och ange /dev/ cdrom som den enhet du vill montera. Vill du partitionera din första hårddisk? Kör ett diskpartitioneringsverktyg och ange /dev/ sda som hårddisken du vill redigera. Vill du formatera den första partitionen på din första hårddisk? Kör ett formateringskommando och berätta för att formatera /dev/ sda1.
Som du kan se visar exponering av dessa enheter som en del av filsystemet sina fördelar. Filsystemet ger en konsekvent "namnrymd" som alla program kan använda för att adressera och komma åt enheterna.
/dev/ null, /dev/ slumpmässig och /dev/ noll
/ dev-filsystemet innehåller inte bara filer som representerar fysiska enheter. Här är tre av de mest anmärkningsvärda specialenheter som den innehåller:
- /dev/ null - Kassera alla data som är skrivna till den - tänk på det som papperskorgen eller ett svart hål. Om du någonsin ser en kommentar som berättar att du ska skicka klagomål till /dev/ null - det är ett geekigt sätt att säga "kasta dem i papperskorgen".
- /dev/ slumpmässig - producerar slumpmässighet med hjälp av miljöbuller. Det är en slumptalsgenerator som du kan använda.
- /dev/ noll - Producerar nollor - en konstant ström av nollor.
Om du tänker på dessa tre som filer ser du inte en användning för dem. Tänk istället på dem som verktyg.
Som standard producerar Linux-kommandon som standard felmeddelanden och annan utmatning som de skriver ut till standardutmatningen, normalt terminalen. Om du vill köra ett kommando och bryr dig inte om dess produktion, kan du omdirigera den utsignalen till /dev/ null. Omdirigera ett kommandos utdata till /dev/ null kasserar genast det omedelbart. I stället för att ha varje kommando implementera sitt eget "tyst läge" kan du använda den här metoden med något kommando.
-kommandot & gt;/dev/ null
Om du ville ha en slumpmässig källa - för att generera en krypteringsnyckel, behöver du inte skriva din egen slumptalsgenerator - du kan använda /dev/ slumpmässig.
För att radera en hårddisks innehåll genom att skriva 0 till den behöver du inte ett särskilt verktyg för att nollställa en enhet - du kan använda standardverktyg och /dev/ noll. Exempelvis läser dd kommandot från en plats och skriver till en annan plats. Följande kommando skulle läsa nollor från /dev/ noll och skriva dem direkt till den första hårddiskpartitionen på ditt system och helt radera innehållet.
( Varning : Det här kommandot raderar alla data på din första partition om du kör den. Kör endast kommandot om du vill förstöra data.)
dd if = /dev/ noll av = /dev/ sda1
Här använder vi ddmed speciella filer( /dev/ noll och /dev/ sda1), men vi kan också använda dd för att läsa från och skriva till aktuella filer. Samma kommando fungerar både för att manipulera enheter direkt och arbetar med filer.
Förtydligande
I praktiken är det mer korrekt att säga att "allt är en ström av byte" än "allt är en fil". /dev/ slumpmässig är inte en fil, men det är verkligen en ström av byte. Och även om dessa saker tekniskt inte är filer, är de tillgängliga i filsystemet - filsystemet är ett universellt "namnrymd" där allt är tillgängligt. Vill du komma åt en slumptalsgenerator eller läs direkt från en enhet? Du hittar både i filsystemet;ingen annan form av adressering behövs.
Naturligtvis är vissa saker faktiskt inte filer - processer som körs på ditt system är inte en del av filsystemet."Allt är en fil" är felaktigt, men många saker fungerar som filer.