Tôi muốn tạo một tệp ngẫu nhiên 1 GB, vì vậy tôi đã sử dụng lệnh sau.
dd if=/dev/urandom of=output bs=1G count=1
Nhưng thay vào đó, mỗi lần tôi khởi chạy lệnh này, tôi nhận được một tệp 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
Chuyện gì thế?
BIÊN TẬP:
Nhờ những câu trả lời tuyệt vời trong chủ đề này, tôi đã đưa ra giải pháp đọc 32 khối lớn 32 MB, tạo ra 1GB:
dd if=/dev/urandom of=output bs=32M count=32
Một giải pháp khác được đưa ra là đọc 1 GB thẳng vào bộ nhớ và sau đó ghi vào đĩa. Giải pháp này chiếm rất nhiều bộ nhớ nên không bị ảnh hưởng:
dd if=/dev/urandom of=output bs=1G count=1 iflag=fullblock
head
không thể thực hiện nhiệm vụ này mà không có -c
tùy chọn không có trong POSIX . Tôi không biết bất kỳ phiên bản cat
nào có thể giải quyết điều này. rsync
là một tiện ích hoàn toàn phi tiêu chuẩn. Đó không phải là ở đây nr ở đó; lướt qua trang người đàn ông của nó, tôi cũng không thấy nó có thể giải quyết vấn đề này như thế nào.
/dev/urandom
không phải trong POSIX ...
dd
tất cả. Tôi sẽ sử dụnghead
,cat
hoặcrsync
ở vị trí của nó hầu như luôn luôn. Và câu hỏi của bạn nếu một trong những lý do tại sao các lựa chọn thay thế thường an toàn hơn.