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
headkhông thể thực hiện nhiệm vụ này mà không có -ctùy chọn không có trong POSIX . Tôi không biết bất kỳ phiên bản catnào có thể giải quyết điều này. rsynclà 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/urandomkhông phải trong POSIX ...
ddtất cả. Tôi sẽ sử dụnghead,cathoặ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.