If-Koubou

Co oznacza "Wszystko jest plikiem" w Linuksie?

Co oznacza "Wszystko jest plikiem" w Linuksie? (Jak)

Jedną z charakterystycznych cech systemu Linux i innych systemów operacyjnych typu UNIX jest to, że "wszystko jest plikiem". Jest to uproszczenie, ale zrozumienie, co to znaczy, pomoże ci zrozumieć, jak działa Linux.

Wiele rzeczy w systemie Linux pojawia się w systemie plików, ale w rzeczywistości nie są to pliki. Są to specjalne pliki reprezentujące urządzenia sprzętowe, informacje o systemie i inne rzeczy - w tym generator liczb losowych.

Te specjalne pliki mogą znajdować się w pseudo lub wirtualnych systemach plików, takich jak / dev, który zawiera specjalne pliki reprezentujące urządzenia, i / proc, który zawiera specjalne pliki, które reprezentują informacje o systemie i procesie.

/ proc

Na przykład, powiedzmy, że chcesz znaleźć informacje na temat twojego procesora. Katalog / proc zawiera specjalny plik - / proc / cpuinfo - zawierający te informacje.

Nie potrzebujesz specjalnego polecenia informującego o stanie procesora - możesz po prostu odczytać zawartość tego pliku za pomocą dowolnego standardowego polecenia, które działa z plikami tekstowymi. Na przykład możesz użyć polecenia cat / proc / cpuinfo aby wydrukować zawartość tego pliku na terminal - drukowanie informacji o procesorze na terminalu. Możesz nawet otworzyć / proc / cpuinfo w edytorze tekstów, aby zobaczyć jego zawartość.

Pamiętaj, że / proc / cpuinfo w rzeczywistości nie jest plikiem tekstowym zawierającym te informacje - jądro Linux i system plików proc ujawniają nam te informacje jako plik. Dzięki temu możemy używać znanych narzędzi do przeglądania i pracy z informacjami.

Katalog / proc zawiera również inne podobne pliki, na przykład:

  • / proc / uptime - Ujawnia czas pracy twojego jądra Linux - innymi słowy, jak długo twój system był włączony bez wyłączania.
  • / proc / version - Wyświetla wersję jądra Linux.

/ dev

W katalogu / dev znajdują się pliki reprezentujące urządzenia - a także pliki reprezentujące inne specjalne rzeczy. Na przykład / dev / cdrom jest twoim napędem CD-ROM. / dev / sda reprezentuje twój pierwszy dysk twardy, a / dev / sda1 reprezentuje pierwszą partycję na twoim pierwszym dysku twardym.

Chcesz zamontować swój CD-ROM? Uruchom polecenie mount i określ / dev / cdrom jako urządzenie, które chcesz zamontować. Chcesz podzielić swój pierwszy dysk twardy? Uruchom narzędzie do partycjonowania dysku i określ plik / dev / sda jako dysk twardy, który chcesz edytować. Chcesz sformatować pierwszą partycję na pierwszym dysku twardym? Uruchom polecenie formatowania i powiedz mu, aby sformatował / dev / sda1.

Jak widać, eksponowanie tych urządzeń jako części systemu plików ma swoje zalety. System plików zapewnia spójną "przestrzeń nazw", którą wszystkie aplikacje mogą wykorzystać do adresowania i uzyskiwania dostępu do urządzeń.

/ dev / null, / dev / random i / dev / zero

System plików / dev zawiera nie tylko pliki reprezentujące urządzenia fizyczne. Oto trzy najbardziej znaczące urządzenia specjalne, które zawiera:

  • / dev / null - Odrzuca wszystkie zapisane na nim dane - pomyśl o tym jako o koszu lub czarnej dziurce. Jeśli kiedykolwiek zobaczysz komentarz z poleceniem wysyłania reklamacji do / dev / null - jest to wulgarny sposób powiedzenia "wyrzuć je do kosza".
  • / dev / random - Generuje losowość przy użyciu szumu środowiskowego. To generator liczb losowych, z którego możesz skorzystać.
  • / dev / zero - Wyprowadza zera - stały strumień zer.

Jeśli myślisz o tych trzech jako plikach, nie zobaczysz dla nich zastosowania. Zamiast tego pomyśl o nich jako o narzędziach.

Na przykład domyślnie polecenia systemu Linux generują komunikaty o błędach i inne dane wyjściowe, które są drukowane na standardowe wyjście, zwykle terminal. Jeśli chcesz uruchomić polecenie i nie dbasz o jego wyjście, możesz przekierować to wyjście do / dev / null. Przekierowanie wyjścia polecenia do / dev / null natychmiast je odrzuca. Zamiast każdego polecenia implementującego własny "tryb cichy", możesz użyć tej metody z dowolnym poleceniem.

polecenie> / dev / null

Jeśli potrzebujesz źródła losowości - powiedzmy, do generowania klucza szyfrowania, nie musisz pisać własnego generatora liczb losowych - możesz użyć / dev / random.

Aby skasować zawartość dysku twardego, pisząc do niego 0, nie potrzebujesz specjalnego narzędzia przeznaczonego do zerowania dysku - możesz użyć standardowych narzędzi i / dev / zero. Na przykład dd polecenie odczytuje z lokalizacji i zapisuje w innej lokalizacji. Poniższe polecenie odczyta zera z / dev / zero i zapisze je bezpośrednio na pierwszej partycji dysku twardego w systemie, całkowicie usuwając jej zawartość.

(Ostrzeżenie: To polecenie usunie wszystkie dane z pierwszej partycji, jeśli ją uruchomisz. Uruchom to polecenie tylko, jeśli chcesz zniszczyć dane.)

dd if = / dev / zero of = / dev / sda1

Tutaj używamy dd ze specjalnymi plikami (/ dev / zero i / dev / sda1), ale możemy również użyć dd do odczytu i zapisu do rzeczywistych plików. To samo polecenie działa zarówno w przypadku bezpośredniego manipulowania urządzeniami, jak i pracy z plikami.

Wyjaśnienie

W praktyce dokładniej jest powiedzieć, że "wszystko jest strumieniem bajtów", niż "wszystko jest plikiem". / Dev / random nie jest plikiem, ale z pewnością jest strumieniem bajtów. I choć te rzeczy nie są technicznie plikami, są dostępne w systemie plików - system plików to uniwersalna "przestrzeń nazw", w której wszystko jest dostępne. Chcesz uzyskać dostęp do generatora liczb losowych lub przeczytać bezpośrednio z urządzenia? Znajdziesz oba w systemie plików; żadna inna forma adresowania nie jest potrzebna.

Oczywiście niektóre rzeczy nie są w rzeczywistości plikami - procesy uruchomione w systemie nie są częścią systemu plików. "Wszystko jest plikiem" jest niedokładne, ale wiele rzeczy zachowuje się jak pliki.