Một số thông tin cơ bản: Tôi đang tìm cách chạy tập lệnh trên máy chủ Red Hat để đọc một số dữ liệu từ/dev/random và sử dụng lệnh Perl unpack() để chuyển đổi nó thành chuỗi hex để sử dụng sau này.). Tôi chạy một vài "đầu -1" trên/dev/ngẫu nhiên và nó dường như được làm việc ra tốt đẹp, nhưng sau khi gọi nó một vài lần, nó sẽ chỉ kinda treo. Sau một vài phút, nó cuối cùng sẽ xuất ra một khối văn bản nhỏ, sau đó kết thúc./dev/ngẫu nhiên Cực kỳ chậm?
Tôi chuyển sang/dev/urandom (Tôi thực sự không muốn, chậm hơn và tôi không cần chất lượng ngẫu nhiên đó) và nó hoạt động tốt cho hai hoặc ba cuộc gọi đầu tiên, sau đó nó cũng bắt đầu treo . Tôi đã tự hỏi nếu đó là lệnh "đầu" đã ném bom nó, vì vậy tôi đã thử làm một số I/O đơn giản sử dụng Perl, và nó cũng đã được treo. Như một nỗ lực mương cuối cùng, tôi đã sử dụng lệnh "dd" để kết xuất một số thông tin ra khỏi nó trực tiếp tới một tệp thay vì tới thiết bị đầu cuối. Tất cả những gì tôi hỏi về nó là 1mb dữ liệu, nhưng phải mất 3 phút để nhận được ~ 400 byte trước khi tôi giết nó.
Tôi đã kiểm tra danh sách quy trình, CPU và bộ nhớ cơ bản bị ảnh hưởng. Chính xác những gì có thể gây ra/dev/ngẫu nhiên để crap ra như thế này và những gì tôi có thể làm gì để ngăn ngừa/sửa chữa nó trong tương lai?
Chỉnh sửa: Cảm ơn các bạn đã giúp đỡ! Có vẻ như tôi đã ngẫu nhiên và urandom trộn lẫn. Tôi đã có kịch bản và chạy ngay bây giờ. Có vẻ như tôi đã học được điều gì đó mới mẻ hôm nay. :)
Bạn dường như có 2 thiết bị được trộn lẫn; trên một hệ thống Linux,/dev/random là chất lượng cao, chặn thiết bị ngẫu nhiên. Nó sẽ "treo" khi không có entropy thu thập sẵn để tạo ra các số ngẫu nhiên chất lượng cao./dev/urandom nên không bị chặn và giả tạo. – geoffspear
Liên quan đến '/ dev/random', xem [wiki] (http://en.wikipedia.org/wiki//dev/random):" Khi nhóm entropy trống, đọc từ/dev/random sẽ chặn cho đến khi bổ sung tiếng ồn môi trường được thu thập. " '/ dev/urandom' sẽ không bị chặn, bạn có chắc là bạn đã dùng nó không? – delnan
như một sang một bên, bạn chạy 'đầu -1', điều này sẽ có tác dụng đọc một dòng, tức là. đọc cho đến khi nó gặp một dòng mới. nếu bạn đang cố gắng đọc một lượng nhỏ dữ liệu, có lẽ bạn nên sử dụng 'dd'. – Hasturkun