Co oznacza Wszystko jest plikiem w Linuksie?
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 działającego z plikami tekstowymi. Na przykład możesz użyć polecenia cat / proc / cpuinfo aby wydrukować zawartość tego pliku do terminala - drukowanie informacji o procesorze na terminalu. Możesz nawet otworzyć / proc / cpuinfo w edytorze tekstu, 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 jądra Linux - innymi słowy, jak długo 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 dysków 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, że jest to kosz na śmieci lub czarna dziura. 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 odrzuca je. 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.