29Jul
Una delle caratteristiche che definiscono Linux e altri sistemi operativi simili a UNIX è che "tutto è un file". Questa è una semplificazione eccessiva, ma capire cosa significa aiuterà a capire come funziona Linux.
Molte cose su Linux compaiono nel tuo file system, ma in realtà non sono file. Sono file speciali che rappresentano dispositivi hardware, informazioni di sistema e altre cose, incluso un generatore di numeri casuali.
Questi file speciali possono trovarsi in pseudo o sistemi di file virtuali come / dev, che contiene file speciali che rappresentano dispositivi, e / proc, che contiene file speciali che rappresentano informazioni di sistema e di processo.
/ proc
Ad esempio, supponiamo di voler trovare informazioni sulla tua CPU.La directory / proc contiene un file speciale - /proc/ cpuinfo - che contiene queste informazioni.
Non hai bisogno di un comando speciale che ti indichi le informazioni sulla CPU: puoi solo leggere il contenuto di questo file usando qualsiasi comando standard che funzioni con file di testo semplice. Ad esempio, è possibile utilizzare il comando
cat /proc/ cpuinfo per stampare il contenuto di questo file sul terminale - stampando le informazioni della CPU sul terminale.È anche possibile aprire /proc/ cpuinfo in un editor di testo per visualizzarne il contenuto.Ricorda, /proc/ cpuinfo non è in realtà un file di testo contenente queste informazioni: il kernel di Linux e il file system proc espongono queste informazioni a noi come file. Questo ci consente di utilizzare strumenti familiari per visualizzare e lavorare con le informazioni.
La directory / proc contiene anche altri file simili, ad esempio: tempo di attività
- /proc/ - Espone il tempo di attività del tuo kernel Linux - in altre parole, per quanto tempo il tuo sistema è stato acceso senza spegnere. Versione
- /proc/ - Espone la versione del tuo kernel Linux.
/ dev
Nella directory / dev, troverai i file che rappresentano i dispositivi, nonché i file che rappresentano altre cose speciali. Ad esempio, /dev/ cdrom è l'unità CD-ROM./dev/ sda rappresenta il tuo primo disco rigido, mentre /dev/ sda1 rappresenta la prima partizione sul tuo primo disco rigido.
Vuoi montare il tuo CD-ROM?Esegui il comando mount e specifica /dev/ cdrom come dispositivo da montare. Vuoi partizionare il tuo primo disco rigido? Eseguire un'utilità di partizionamento del disco e specificare /dev/ sda come disco rigido che si desidera modificare. Vuoi formattare la prima partizione sul tuo primo disco rigido? Esegui un comando di formattazione e digli di formattare /dev/ sda1.
Come si può vedere, l'esposizione di questi dispositivi come parte del file system ha i suoi vantaggi. Il file system fornisce uno "spazio dei nomi" coerente che tutte le applicazioni possono utilizzare per indirizzare e accedere ai dispositivi.
/dev/ null, /dev/ random e /dev/ zero
Il file system / dev non contiene solo file che rappresentano dispositivi fisici. Ecco tre dei dispositivi speciali più importanti che contiene:
- /dev/ null - Scarta tutti i dati scritti su di esso - pensateci come un cestino o buco nero. Se vedi un commento che ti dice di inviare denunce a /dev/ null - questo è un modo geniale di dire "buttali nella spazzatura".
- /dev/ random - Produce casualità usando il rumore ambientale.È un generatore di numeri casuali a cui puoi attingere.
- /dev/ zero - Produce zeri - un flusso costante di zeri.
Se pensi a questi tre come file, non ne vedrai l'uso. Invece, pensa a loro come strumenti.
Ad esempio, per impostazione predefinita, i comandi Linux generano messaggi di errore e altri output che stampano sullo standard output, normalmente il terminale. Se si desidera eseguire un comando e non si preoccupa del suo output, è possibile reindirizzare tale output su null /dev/.Il reindirizzamento dell'output di un comando a null /dev/ lo elimina immediatamente. Invece di far eseguire a ogni comando la sua "modalità silenziosa", puoi utilizzare questo metodo con qualsiasi comando. Comando
& gt;/dev/ null
Se si desidera una fonte di casualità, ad esempio, per generare una chiave di crittografia, non è necessario scrivere il proprio generatore di numeri casuali - è possibile utilizzare /dev/ in modo casuale.
Per cancellare il contenuto di un disco rigido scrivendo gli 0, non è necessaria un'utilità speciale dedicata all'azzeramento di un'unità: è possibile utilizzare utilità standard e /dev/ zero. Ad esempio, il comando dd legge da una posizione e scrive in un'altra posizione. Il seguente comando leggerà gli zeri da /dev/ zero e li scriverà direttamente nella prima partizione del disco rigido sul sistema, cancellandone completamente il contenuto.
( Avviso : questo comando cancellerà tutti i dati sulla prima partizione se lo esegui. Esegui solo questo comando se vuoi distruggere i dati.)
dd if = /dev/ zero di = /dev/ sda1
Qui stiamo usando ddcon file speciali( /dev/ zero e /dev/ sda1), ma potremmo anche usare dd per leggere e scrivere su file reali. Lo stesso comando funziona sia per manipolare i dispositivi direttamente che per lavorare con i file.
Chiarimento
In pratica, è più preciso dire che "tutto è un flusso di byte" rispetto a "tutto è un file". /dev/ random non è un file, ma sicuramente è un flusso di byte. E sebbene queste cose tecnicamente non siano file, sono accessibili nel file system - il file system è uno "spazio dei nomi" universale in cui tutto è accessibile. Vuoi accedere a un generatore di numeri casuali o leggere direttamente da un dispositivo? Troverete entrambi nel file system;nessun'altra forma di indirizzamento è necessaria.
Ovviamente, alcune cose non sono in realtà dei file: i processi in esecuzione sul sistema non fanno parte del file system."Tutto è un file" è impreciso, ma molte cose si comportano come file.