29Jul
Jedną z cech definiujących system Linux i inne systemy operacyjne 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 o twoim CPU.Katalog / proc zawiera specjalny plik - /proc/ cpuinfo - zawierający te informacje.
Nie potrzebujesz specjalnego polecenia, które mówi ci o CPU - 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ć komendy
cat /proc/ cpuinfo , aby wydrukować zawartość tego pliku do terminala - wyświetlając informacje o procesorze na terminalu. Możesz nawet otworzyć /proc/ cpuinfo w edytorze tekstu, aby zobaczyć jego zawartość.Pamiętaj, /proc/ cpuinfo w rzeczywistości nie jest plikiem tekstowym zawierającym te informacje - jądro systemu 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 także 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/ wersja - udostępnia 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 pierwszy dysk twardy, a /dev/ sda1 reprezentuje pierwszą partycję na 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 /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ć, ekspozycja 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/ losowy i /dev/ zero
System plików / dev nie zawiera tylko plików reprezentujących fizyczne urządzenia. 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 informujący o wysyłaniu reklamacji do /dev/ null - to fajny 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 - Wyprodukuje 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, 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.
command & gt;/dev/ null
Jeśli potrzebujesz źródła losowości - powiedzmy, do wygenerowania klucza szyfrowania, nie musisz pisać własnego generatora liczb losowych - możesz użyć /dev/ losowo.
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 zera /dev/.Na przykład polecenie dd odczytuje z lokalizacji i zapisuje w innej lokalizacji. Następujące polecenie odczytałoby zera z /dev/ zero i zapisze je bezpośrednio na pierwszej partycji dysku twardego w systemie, całkowicie wymazując jej zawartość.
( Warning : To polecenie usunie wszystkie dane z pierwszej partycji, jeśli ją uruchomisz Uruchom to polecenie, jeśli chcesz zniszczyć dane.)
dd if = /dev/ zero = /dev/ sda1
Tutaj używamy ddz plikami specjalnymi( /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.
Clarification
W praktyce dokładniej jest powiedzieć, że "wszystko jest strumieniem bajtów", niż "wszystko jest plikiem". /dev/ 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.