Sự khác biệt giữa / dev / null và / dev / zero


27

Khi cố gắng chuyển hướng đến /dev/null/dev/zero, đầu ra nó bị loại bỏ. Có vẻ như cả hai /dev/null/dev/zerochấp nhận và loại bỏ tất cả đầu vào. Vì vậy, sự khác biệt giữa /dev/nullvà là /dev/zerogì?


6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* chạy đi *
joeytwiddle

Câu trả lời:


51

Có, cả hai đều chấp nhận và loại bỏ tất cả đầu vào, nhưng đầu ra của chúng không giống nhau:

  • /dev/nullsản xuất không có đầu ra .
  • /dev/zerotạo ra một luồng liên tục các byte NULL (giá trị 0) .

Bạn có thể thấy sự khác biệt bằng cách thực hiện cat /dev/nullcat /dev/zero.

  • Hãy thử cat /dev/null > filevà bạn sẽ tìm thấy một sản phẩm nào file.

  • Bây giờ hãy thử cat /dev/zero > file, trong khi xem kích thước của tệp ( watch -n 1 du -h file) liên tục tăng. Điều này là do đọc từ /dev/zerocung cấp một dòng vô tận các \0ký tự (null).

Sử dụng ddđể hình dung sự khác biệt một cách phù hợp hơn:

$ 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 được sử dụng để tạo tập tin giả hoặc trao đổi.

Cũng ghé thăm:


Đồng thời xem thecodlesscode.com/case/6
kojiro

2
Đáng chú ý: mmapping /dev/zerovới MAP_PRIVATElà cách "di động" để có được ánh xạ bộ nhớ ẩn danh (trong trường hợp không có tiện ích mở rộng như MAP_ANON).
nneonneo

6
Có lẽ không rõ ràng đối với người đọc thông thường chỉ là cách /dev/null tạo ra không có đầu ra: Nó báo hiệu EOF ngay lập tức.
Peter - Tái lập Monica

Có một thiết bị cung cấp cho tất cả những người?
Aaron Franke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.