天天看點

linux中特殊的裝置(/dev/zeo,/dev/null,/dev/unrandom,/dev/random)/dev/zero 與 /dev/null/dev/random與/dev/unrandom

/dev/zero 與 /dev/null

我們平時在使用dd指令測試磁盤性能時候,時常見到 dd if=/dev/zero或者 dd of=/dev/null這樣的寫法。這是什麼東西呢?

/dev/null

/dev/null看作"黑洞"。 它非常等價于一個隻寫檔案。所有寫入它的内容都會永遠丢失。 而嘗試從它那兒讀取内容則什麼也讀不到。是以我們是不能從他那裡讀到資料的,是以在dd指令中當我們為了測試某個磁盤的讀性能時候,就可以将of指定為/dev/null 這樣相當從要測試的裝置上讀出的資料都填到了這個無底洞中。同時, /dev/null對指令行和腳本都非常的有用的。例如,當我們标準輸出中有很多很多的無用資訊時候而我們并不需要,這樣就可以将輸出重定向到/dev/null中:

禁止标準輸出.    1 cat $filename >/dev/null

/dev/zero

像/dev/null一樣, /dev/zero也是一個僞檔案。 他産生連續不斷的null的流(二進制的零流,而不是ASCII型的)。寫入它的輸出會丢失不見, 而從/dev/zero讀出一連串的null也比較困難, 雖然這也能通過od或一個十六進制編輯器來做到。 /dev/zero主要的用處是用來建立一個指定長度用于初始化的空檔案,就像臨時交換檔案。另一個應用是為特定的目的而用零去填充一個指定大小的檔案,就像我們在用dd指令為了測試磁盤寫性能時候,我們可以将if指定為/dev/zero這樣,他就相當源源不斷的向我們要測試的裝置中寫入資料。

/dev/random與/dev/unrandom

dev/random和/dev/urandom是unix系統提供的産生随機數的裝置,很多應用都需要使用random裝置提供的随機數,比如ssh keys, SSL keys, TCP/IP sequence numbers等等。他們的差別在于,/dev/urandom生成的速度比/dev/random快。如果不能立即生成随機串,/dev/random會一直阻塞,有時會非常耗費CPU;/dev/urandom則會根據其他值立即生成一個随機串,不會阻塞。/dev/urandom生成的随機值沒有/dev/random随機。大多數情況下,我們選用/dev/urandom

繼續閱讀