/dev/null和/dev/zero的用法


在Linux操作系統中/dev/null和/dev/zero是兩個相似卻又很特殊的文件,特別是在shell腳本開發和系統運維過程中會經常用這兩個文件,因此作為Linux系統工程師,必須了解這兩個文件的區別和用法。

一、/dev/null的用法:
我們可以把/dev/null文件看作”黑洞”,它非常等價於一個只寫文件,所有寫入/dev/null文件的內容都會丟失,而從/dev/null文件 中也讀取不到任何內容。然而,也正因為這些特點,在shell腳本開發和命令行維護時,/dev/null文件就可大展身手,顯得非常的有用。

1. 禁止標准輸出
例如:cat查看filename文件,其回顯信息將為空 # catfilename >/dev/null

2. 禁止標准錯誤
例如:rm刪除文件時,若badname文件不存在,那么如下的方式則會過濾回顯的錯誤信息 # rmbadname 2>/dev/null

3. 禁止標准輸出和標准錯誤的輸出
例如:cat查看filename文件 # catfilename 2>/dev/null >/dev/null
# 如果”filename”不存在,將不會有任何錯誤信息提示. # 如果”filename”存在, 文件的內容不會打印到標准輸出.
# 因此上面的代碼根本不會輸出任何信息.

4. 清除日志文件內容
例如:
# cat /dev/null > /var/log/messages
# : > /var/log/messages 有同樣的效果, 但不會產生新的進程.(因為:是內建的)
# cat /dev/null > /var/log/wtmp

5. /dev/null的特殊用法,程序打印的日志將不再記錄,避免系統空間被不需要的日志所占用
例如:將該cookie的日志文件鏈接到/dev/null,那么往該文件中寫入的內容都將被拋棄
# ln -s /dev/null ~/.netscape/cookies

二、/dev/zero的用法:
/dev/zero和/dev/null一樣,也是一個偽文件,但/dev/zero實際上能產生連續不斷的null的流(二進制的零流,而不是 ASCII型的),寫入/dev/zero的輸出會丟失不見,而從/dev/zero讀出一連串的null也比較困難,雖然這也能通過dd或一個十六進制 編輯器來做到,/dev/zero主要的用處是用來創建一個指定長度用於初始化的空文件,它通常都是配合dd命令一起使用的。

1. 用/dev/zero創建一個指定大小的臨時文件
例如:結合dd命令可創建一個大小為1024*1000bit的文件/swap,當然這個文件的大小可通過bs和count參數去調整
# dd if=/dev/zero of=/swap bs=1024 count=1000

2. 通過/dev/zero將零填充到一個指定大小的文件,以使用某些特殊需求
例如:把RAM設備的內容用零填充,從而實現格式化RAM的目的
# dd if=/dev/zero of=DEVICEcount=SIZE bs=$BLOCKSIZE

綜上所述,/dev/null和/dev/zero文件的區別和用法如下:
/dev/null文件是空設備,也稱為位桶(bit bucket),它主要是用於“被寫入”,任何寫入它的輸出都會被拋棄。如果不想讓消息以標准輸出顯示或寫入文件,那么可以將消息重定向到/dev /null。因此凡是向/dev/null輸入的任何數據,它通吃,並且不會撐着!
/dev/zero文件主要是用作一個標准的“0”輸入設備,它可無窮盡地提供0,可以使用/dev/zero來初始化文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM