29Jul

Ce înseamnă "totul este un fișier" în Linux?

click fraud protection

Una dintre trăsăturile definitorii ale Linux și ale altor sisteme de operare asemănătoare UNIX este că "totul este un fișier". Aceasta este o simplificare simplificată, dar înțelegerea a ceea ce înseamnă vă va ajuta să înțelegeți cum funcționează Linux.

Multe lucruri pe Linux apar în sistemul dvs. de fișiere, dar acestea nu sunt de fapt fișiere. Sunt fișiere speciale care reprezintă dispozitive hardware, informații despre sistem și alte lucruri - inclusiv un generator de numere aleatoare.

Aceste fișiere speciale pot fi amplasate în sisteme de fișiere pseudo sau virtuale, cum ar fi / dev, care conține fișiere speciale care reprezintă dispozitive și / proc, care conține fișiere speciale care reprezintă informații despre sistem și proces.

/ proc

De exemplu, să presupunem că doriți să găsiți informații despre procesorul dvs. Directorul / proc conține un fișier special - /proc/ cpuinfo - care conține aceste informații.

Nu aveți nevoie de o comandă specială care să vă spună informațiile CPU - puteți citi conținutul acestui fișier folosind orice comandă standard care funcționează cu fișiere text simplu. De exemplu, ați putea folosi comanda

instagram viewer
cat /proc/ cpuinfo pentru a tipări conținutul acestui fișier la terminal - tipărirea informațiilor CPU către terminal. Ai putea chiar să deschizi cpuinfo /proc/ într-un editor de text pentru a-ți vedea conținutul.

Amintiți-vă că cpuinfo /proc/ nu este de fapt un fișier text care conține această informație - kernel-ul Linux și sistemul de fișiere proc expun aceste informații la noi ca fișier. Acest lucru ne permite să folosim instrumente familiare pentru a vizualiza și a lucra cu informațiile.

Directorul / proc conține, de asemenea, alte fișiere similare, de exemplu:

  • /proc/ uptime - expune timpul de funcționare al kernel-ului dvs. Linux - cu alte cuvinte, cât timp a funcționat sistemul dvs. fără a se opri. Versiunea
  • /proc/ - expune versiunea kernel-ului tău Linux.

/ dev

În directorul / dev veți găsi fișiere care reprezintă dispozitive - precum și fișiere care reprezintă alte lucruri speciale. De exemplu, cdromul /dev/ este unitatea CD-ROM./dev/ sda reprezintă primul dvs. hard disk, în timp ce /dev/ sda1 reprezintă prima partiție de pe prima dvs. unitate de disc.

Doriți să vă montați CD-ROM-ul? Rulați comanda mount și specificați /dev/ cdrom ca dispozitiv pe care doriți să-l montați. Doriți să partiționați primul hard disk? Rulați un utilitar de partiționare pe disc și specificați /dev/ sda ca hard disk pe care doriți să îl editați. Doriți să formatați prima partiție pe primul dvs. hard disk? Rulați o comandă de formatare și spuneți-i să formateze /dev/ sda1.

După cum puteți vedea, expunerea acestor dispozitive ca parte a sistemului de fișiere are avantajele sale. Sistemul de fișiere oferă un "spațiu de nume" consistent pe care toate aplicațiile îl pot utiliza pentru a aborda și a accesa dispozitivele.

/dev/ null, /dev/ aleatoare și /dev/ zero

Sistemul de fișiere / dev nu conține doar fișiere care reprezintă dispozitive fizice. Iată trei dintre cele mai notabile dispozitive speciale pe care le conține:

  • /dev/ null - Îndepărtează toate datele scrise pe el - gândiți-vă la acesta ca pe un coș de gunoi sau o gaură neagră.Dacă vedeți vreodată un comentariu care vă spune să trimiteți reclamații la /dev/ null - acesta este un mod de a spune "aruncați-le în coșul de gunoi".
  • /dev/ aleator - Produce aleatorie utilizând zgomotul ambiental. Este un generator de numere aleatoare la care poți intra.
  • /dev/ zero - Produce zerouri - un flux constant de zerouri.

Dacă vă gândiți la aceste trei fișiere, nu veți vedea o utilizare pentru ele.În schimb, gândiți-vă la ele ca la unelte.

De exemplu, în mod implicit, comenzile Linux produc mesaje de eroare și alte ieșiri pe care le imprimă la ieșirea standard, în mod normal terminalul. Dacă doriți să executați o comandă și nu-i pasă de ieșirea acesteia, puteți redirecționa acea ieșire la /dev/ null. Redirecționarea ieșirii unei comenzi la /dev/ null o elimină imediat.În loc de a avea fiecare comandă să implementeze propriul "mod silențios", puteți folosi această metodă cu orice comandă.Comanda

& gt;/dev/ null

Dacă ați vrut o sursă de aleatorie - să zicem, pentru generarea unei chei de criptare, nu ar trebui să scrieți propriul generator de numere aleatoare - ați putea folosi /dev/ aleatoriu.

Pentru a șterge conținutul unui hard disk prin scrierea lui 0 la el, nu aveți nevoie de un utilitar special dedicat zero-ului unei unități - ați putea folosi utilitarele standard și zero /dev/.De exemplu, comanda dd citește dintr-o locație și scrie în altă locație. Următoarea comandă va citi zerouri din /dev/ zero și le va scrie direct pe prima partiție de hard disk de pe sistem, completându-și conținutul. ( Avertisment : Această comandă va șterge toate datele de pe prima dvs. partiție dacă o rulați. Executați această comandă numai dacă doriți să distrugeți date.)

dd if = /dev/ zero de la = /dev/ sda1

Aici folosim ddcu fișiere speciale( /dev/ zero și /dev/ sda1), dar am putea folosi și dd pentru a citi și scrie fișierele reale. Aceeași comandă funcționează atât pentru manipularea directă a dispozitivelor, cât și pentru lucrul cu fișierele.

Clarificare

În practică, este mai precis să spunem că "totul este un flux de octeți" decât "totul este un fișier". /dev/ aleatoriu nu este un fișier, dar cu siguranță este un flux de octeți.Și, deși aceste lucruri nu sunt fișiere tehnice, ele sunt accesibile în sistemul de fișiere - sistemul de fișiere este un "spațiu de nume" universal în care totul este accesibil. Doriți să accesați un generator de numere aleatorii sau să citiți direct dintr-un dispozitiv? Veți găsi atât în ​​sistemul de fișiere;nu este nevoie de altă formă de abordare.

Desigur, unele lucruri nu sunt fișiere de fapt - procesele care rulează pe sistemul dvs. nu fac parte din sistemul de fișiere."Totul este un fișier" este inexact, dar multe lucruri se comportă ca fișiere.