Różnica między / dev / null i / dev / zero

27

Podczas próby przekierowania do /dev/nulli /dev/zerodane wyjściowe są odrzucane. Wydaje się zarówno /dev/nulli /dev/zeroprzyjąć i odrzucić wszystkie dane wejściowe. Jaka jest różnica między /dev/nulli /dev/zero?

Pandya
źródło
6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* ucieka *
joeytwiddle

Odpowiedzi:

52

Tak, zarówno akceptują, jak i odrzucają wszystkie dane wejściowe, ale ich dane wyjściowe nie są takie same:

  • /dev/nullnie wytwarza żadnych wyników .
  • /dev/zerotworzy ciągły strumień NULL (wartość zerowa) bajtów .

Możesz zobaczyć różnicę, wykonując cat /dev/nulli cat /dev/zero.

  • Spróbuj, cat /dev/null > filea znajdziesz pusty file.

  • Teraz spróbuj cat /dev/zero > file, jednocześnie obserwując, jak rozmiar pliku ( watch -n 1 du -h file) stale rośnie. Jest tak, ponieważ czytanie z /dev/zerodaje nieskończony strumień \0(zerowych) znaków.

Użyj, ddaby lepiej zwizualizować różnicę:

$ dd if=/dev/null of=file count=10
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000276193 s, 0.0 kB/s

$ dd if=/dev/zero of=file count=10
10+0 records in
10+0 records out
5120 bytes (5.1 kB) copied, 0.00090775 s, 5.6 MB/s

/dev/zero służy do tworzenia plików zastępczych lub zamiany.

Odwiedź także:

Pandya
źródło
Zobacz także thecodelesscode.com/case/6
kojiro 10.01.16
2
Warto zauważyć: mmapping /dev/zeroz MAP_PRIVATEjest „przenośnym” sposobem na uzyskanie anonimowego mapowania pamięci (przy braku takich rozszerzeń MAP_ANON).
nneonneo
6
Dla zwykłego czytelnika być może nie jest oczywiste, w jaki sposób /dev/null nie generuje sygnału wyjściowego: natychmiast sygnalizuje EOF.
Peter - Przywróć Monikę
Czy istnieje urządzenie, które daje wszystkim?
Aaron Franke