Co to jest plik specjalny?

W komputerowym systemie operacyjnym specjalny plik jest jednym typem pliku, który może być przechowywany w systemie plików. Specjalny plik jest czasami nazywany również plikiem urządzenia .

Celem specjalnego pliku jest udostępnienie urządzenia jako pliku w systemie plików. Specjalny plik zapewnia uniwersalny interfejs dla urządzeń sprzętowych (i urządzeń wirtualnych tworzonych i używanych przez jądro), ponieważ narzędzia do wejścia / wyjścia pliku mogą być używane do uzyskania dostępu do urządzenia.

Gdy dane są czerwone lub zapisywane w specjalnym pliku, operacja następuje natychmiast i nie podlega konwencjonalnym regułom systemu plików.

W Linuksie istnieją dwa typy plików specjalnych: blokowanie plików specjalnych i specjalnych plików znakowych .

Plik specjalny bloku działa jako bezpośredni interfejs do urządzenia blokowego. Urządzenie blokowe to dowolne urządzenie, które wykonuje dane we / wy w jednostkach bloków.

Przykłady blokowych plików specjalnych:

  • / dev / sd xn - zamontowane partycje fizycznych urządzeń pamięci masowej. Litera x odnosi się do urządzenia fizycznego, a liczba n odnosi się do partycji na tym urządzeniu. Na przykład / dev / sda1 jest zazwyczaj pierwszą partycją pierwszego fizycznego urządzenia pamięci masowej.
  • Urządzenia / dev / loop n - loop. Są to specjalne urządzenia, które umożliwiają użycie pliku w systemie plików jako urządzenia blokowego. Plik może zawierać cały własny system plików i być dostępny tak, jakby był zamontowaną partycją na fizycznym urządzeniu magazynującym. Na przykład plik obrazu dysku ISO może być zamontowany jako urządzenie pętlowe.

Jeśli chcesz wiedzieć, jak duży blok jest w twoim systemie, uruchom „ urządzenie blockdev --getbsz ” jako root, np .:

 sudo blockdev --getbsz / dev / sda1 
 4096 

W tym przykładzie rozmiar bloku wynosi 4096 bajtów (4 kibibity).

Specjalne pliki znaków

Specjalny plik znakowy jest podobny do urządzenia blokowego, ale dane zapisywane są po jednym znaku (osiem bitów lub jeden bajt) naraz.

Przykłady specjalnych plików znaków:

  • / dev / stdin (standardowe wejście.)
  • / dev / stdout (standardowe wyjście.)
  • / dev / stderr (błąd standardowy.)
  • / dev / random (PRNG, który może opóźnić zwrot wartości, aby uzyskać dodatkową entropię.)
  • / dev / urandom (PRNG, który zawsze zwraca wartość natychmiast, niezależnie od wymaganej entropii.)
  • / dev / null (urządzenie zerowe. Odczyt z tego pliku zawsze otrzymuje bajt null; zapisywanie do tego pliku z powodzeniem nic nie robi.)

Typy plików Linux

W jądrze Linux typy plików są deklarowane w pliku nagłówkowym sys / stat.h. Nazwa typu, nazwa symboliczna i maska ​​bitowa dla każdego typu pliku Linux są wymienione poniżej.

Jak mogę sprawdzić, czy plik jest wyjątkowy?

Test na blok specjalny

W bashu polecenie „ plik- testu ” zwraca kod wyjścia 0, jeśli plik jest specjalny, lub 1, jeśli plik jest innego typu lub nie istnieje.

 test -b / dev / sda1; echo $? # sprawdź specjalny blok, status wyjścia echa testu 
 0 
 test -b / dev / null; echo $? # znaki specjalne nie są blokowane 
 1 

Test na wyjątkowy charakter

Aby określić, czy plik jest specjalny, użyj „ pliku test -c ”:

 test -c / dev / null; echo $? 
 0 

Używanie statystyk

Możesz także sprawdzić typ pliku za pomocą stat :

 stat / dev / sda1 
 Plik: / dev / sda1 Rozmiar: 0 Bloki: 0 Blok IO: 4096 blok specjalny plik Urządzenie: 6h / 6d Węzeł: 7998 Linki: 1 Typ urządzenia: 8, 1 Dostęp: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / dysk) Dostęp: 2018-07-08 06: 41: 25.540000000 -0400 Zmień: 2018-07-08 06: 41: 25.540000000 -0400 Zmień: 2018-07-08 06: 41: 25.540000000 -0400 Narodziny: - 
 stat / dev / random 
 Plik: / dev / random Rozmiar: 0 Bloki: 0 Blok IO: 4096 znak specjalny plik Urządzenie: 6h / 6d Węzeł: 6518 Linki: 1 Typ urządzenia: 1, 8 Dostęp: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) Dostęp: 2018-07-08 06: 41: 19.676000000 -0400 Zmień: 2018-07-08 06: 41: 19.676000000 -0400 Zmiana: 2018-07-08 06:41 : 19.676000000 -0400 Narodziny: - 

Węzeł, terminy systemu operacyjnego, standardowe wejście (standardowe wejście), standardowe wyjście (standardowe wyjście)