Linux中/dev/null和/dev/zero文件说明及实践!
老男孩IT教育
常见问题
2023年2月10日 17:59
在Linux系统中,有两个比较特殊的文件,分别是:/dev/null和/dev/zero。/dev/null或称为空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据,读取它则会立即得到一个EOF;/dev/zero当你读它的时候,它会提供无限的空字符。
在Linux系统中,有两个比较特殊的文件,分别是:/dev/null和/dev/zero。/dev/null或称为空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据,读取它则会立即得到一个EOF;/dev/zero当你读它的时候,它会提供无限的空字符。

在类Unix操作系统中,设备节点并不一定要对应物理设备。没有这种对应关系的设备被称之为伪设备。操作系统运用了它们实现多种多样的功能,/dev/null和/dev/zero就是这样的设备,类似的还有/dev/urandom、/dev/tty等。
先检查下/dev/null和/dev/zero两个文件的属性:
[root@oldboy ~]# ls -l/dev/null /dev/zero
crw-rw-rw-. 1 root root 1, 3Jul 15 00:11 /dev/null
crw-rw-rw-. 1 root root 1, 5Jul 15 00:11 /dev/zero
提示:从文件属性可以看出这两个文件都是字符设备文件。
1、/dev/null
1)/dev/null介绍
大家都知道宇宙中“太阳黑洞”吧,所有的天体(含地球)一旦进入了太阳黑洞都会消失的无影无踪。这里的/dev/null就是Linux系统中的"黑洞"。
在类Unix系统中,/dev/null是一个特殊的设备文件,所有写入其中的数据,都会被丢弃的无影无踪,/dev/null通常被用于丢弃不需要的数据输出,或作为用于输入流的空文件。这些操作通常由重定向完成。
2)/dev/null实践
范例1-1:清空文件。

范例1-2:将无用的输出流写入到黑洞丢弃。
当取一个地址响应头的第一行时,加上管道就会出现下面的特殊结果:
[root@oldboy ~]# curl -Iwww.oldboyedu.com|head -1
% Total % Received % Xferd AverageSpeed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
执行上述命令时,会凭空多出来的几行无用信息,此时就可以使用将错误信息定向到黑洞
(2>/dev/null)的方式丢弃无用信息。
[root@oldboy ~]# curl -Iwww.oldboyedu.com 2>/dev/null|head -1 #<==将错误信息定向到黑洞。
HTTP/1.1 200 OK
当然了curl命令也提供了实现参数,这里暂且不多表。

范例1-3:将定时任务脚本结尾加上>/dev/null 2>&1
在书写定时任务总,规范的写法就是将所有定时任务脚本结尾加上>/dev/null 2>&1,让所有的输出流都定向到空设备丢弃。

2、/dev/zero
1) /dev/zero介绍
和/dev/null类似,/dev/zero也是一个特殊的字符设备文件,当我们使用或读取它的时候,它会提供无限连续不断的空的数据流。
/dev/zero文件的常见应用场景有二:
a./dev/zero文件覆盖其他文件信息。
b.产生指定大小的空文件,例如:交换文件、模拟虚拟文件系统等。
2)/dev/zero实践
范例1-5:产生指定大小的空文件。

范例1-4:利用/dev/zero文件覆盖其他文件信息

老男孩教育Linux运维云计算课程汇集了虚拟化、云计算、安全攻防、Python开发、SRE等技术,课堂效率高、内容丰富全面,由浅入深,循序渐进,帮助学员稳扎稳打,夯实基础,在有限的时间内帮助学员高效提升,成为符合企业需求的技术型人才。
推荐阅读:
老男孩教育专注IT教育10余年,只培养IT技术精英
全国免费咨询电话(渠道合作):400-609-2893











