老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

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当你读它的时候,它会提供无限的空字符。

Linux学习班

  在类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等技术,课堂效率高、内容丰富全面,由浅入深,循序渐进,帮助学员稳扎稳打,夯实基础,在有限的时间内帮助学员高效提升,成为符合企业需求的技术型人才。

  推荐阅读:

  运维人员如何最大限度避免误删文件?

  Linux如何配置开机自启动执行脚本?

  云计算10大应用场景详解!

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。