ฉันต้องการสร้างไฟล์สุ่มขนาด 1 GB ดังนั้นฉันจึงใช้คำสั่งต่อไปนี้
dd if=/dev/urandom of=output bs=1G count=1
แต่ทุกครั้งที่ฉันเรียกใช้คำสั่งนี้ฉันจะได้รับไฟล์ขนาด 32 MB:
<11:58:40>$ dd if=/dev/urandom of=output bs=1G count=1
0+1 records in
0+1 records out
33554431 bytes (34 MB, 32 MiB) copied, 0,288321 s, 116 MB/s
เกิดอะไรขึ้น?
แก้ไข:
ขอบคุณคำตอบที่ยอดเยี่ยมในหัวข้อนี้ฉันมาพร้อมกับโซลูชันที่อ่าน 32 ชิ้นขนาดใหญ่ 32 MB ซึ่งทำให้ 1GB:
dd if=/dev/urandom of=output bs=32M count=32
วิธีการแก้ปัญหาอื่นได้รับที่อ่าน 1 GB ตรงไปยังหน่วยความจำแล้วเขียนลงดิสก์ วิธีแก้ปัญหานี้ใช้หน่วยความจำจำนวนมากดังนั้นจึงไม่ได้ถูกเตรียมไว้ล่วงหน้า:
dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock
head
ไม่สามารถทำงานนี้โดยไม่มี-c
ตัวเลือกที่ไม่ได้อยู่ใน POSIX ฉันไม่รู้รุ่นใดcat
ที่สามารถแก้ปัญหานี้ได้ rsync
เป็นโปรแกรมอรรถประโยชน์ที่ไม่ได้มาตรฐานอย่างสมบูรณ์ นั่นไม่ได้อยู่ที่นี่ อ่านผ่านหน้าคนของมันฉันไม่เห็นว่ามันจะสามารถแก้ปัญหานี้ได้อย่างไร
/dev/urandom
ไม่ได้อยู่ใน POSIX เช่นกัน ...
dd
เลย ฉันต้องการใช้head
,cat
หรือrsync
ในสถานที่ที่เกือบตลอดเวลา และคำถามของคุณหากหนึ่งในเหตุผลที่ทางเลือกมักปลอดภัยกว่า