ความแตกต่างระหว่าง / dev / null และ / dev / ศูนย์


27

เมื่อพยายามเปลี่ยนเส้นทางไปที่/dev/nullและ/dev/zeroผลลัพธ์จะถูกยกเลิก ดูเหมือนว่าทั้งสอง/dev/nullและ/dev/zeroยอมรับและทิ้งอินพุตทั้งหมด ดังนั้นอะไรคือความแตกต่างระหว่าง/dev/nullและ/dev/zero?


6
rm -f /dev/zero ; echo -n 111111111111 > /dev/zero* วิ่งหนี *
joeytwiddle

คำตอบ:


51

ใช่ทั้งยอมรับและทิ้งอินพุตทั้งหมด แต่เอาต์พุตไม่เหมือนกัน:

  • /dev/nullผลิตส่งออกไม่มี
  • /dev/zeroผลิตกระแสอย่างต่อเนื่องของโมฆะ (ศูนย์บาท) ไบต์

คุณสามารถเห็นความแตกต่างโดยการดำเนินการและcat /dev/nullcat /dev/zero

  • ลองและคุณจะพบที่ว่างเปล่าcat /dev/null > filefile

  • ลองตอนนี้cat /dev/zero > fileในขณะที่ดูขนาดของไฟล์ ( watch -n 1 du -h file) เพิ่มขึ้นอย่างต่อเนื่อง นี่เป็นเพราะการอ่านจาก/dev/zeroให้จำนวน\0อักขระ (null) ไม่สิ้นสุด

ใช้ddเพื่อให้เห็นภาพความแตกต่างที่เหมาะสมยิ่งขึ้น:

$ 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 ใช้สำหรับสร้างไฟล์จำลองหรือแลกเปลี่ยน

เยี่ยมชม:



2
เร็ว ๆ นี้: mmapping /dev/zerowith MAP_PRIVATEเป็นวิธี "พกพา" เพื่อขอรับการแมปหน่วยความจำแบบไม่ระบุชื่อ (ในกรณีที่ไม่มีนามสกุลเหมือนMAP_ANON)
nneonneo

6
บางทีอาจจะไม่ชัดเจนสำหรับผู้อ่านที่ไม่เป็นทางการว่า /dev/null มันไม่สร้างผลลัพธ์: มันส่งสัญญาณ EOF ทันที
Peter - Reinstate Monica

มีอุปกรณ์ที่ให้ทุกอย่างหรือไม่?
Aaron Franke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.