Linux中的黑洞(black hole)-/dev/null
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50514018
1 /dev/null文件
1.1 维基百科关于/dev/null说明
In some operating systems, the null device is a device file that discards all data written to it but reports that the write operation succeeded.
The null device is typically used for disposing of unwanted output streams of a process, or as a convenient empty file for input streams. This is usually done by redirection.
The /dev/null device is a special file, not a directory, so one cannot move a whole file or directory into it with the Unix mv command. The rm command is the proper way to delete files in Unix.
以上引自维基百科https://en.wikipedia.org/w/index.php?title=Null_device&redirect=no
简单翻译:
在许多操作系统中, /dev/null是一个空设备,是一个抛弃向该文件中写的所有数据并反馈写操作成功的设备文件。
/dev/null通常用来处理进程中那些不想要的输出流,或者作为一个方便的空文件给输入流。这个通过用来做重定向。
/dev/null设备是一个特殊的文件,而不是一个路径。因此不能通过mv命令来移动一个文件或路径进入这个设备文件,rm命令是Unix系统中删除文件适当的方法。
以上为本人拙劣的翻译,凑合看
1.2 /dev/null用法
既然定义中说了/dev/null是一个接收垃圾的文件(比喻),那完美要如何使用呢?
将之前还需要普及下Linux重定向和shell相关知识。
比如,我经常会执行这个命令:
nohup ./program >/dev/null 2>&1 &
上面命令中的>符号就是重定向符号。那么那个数字1和2是个啥玩意?
1.2.1 聊聊数字
在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0、1和2。所以这里2>&1 的意思就是将标准错误也输出到标准输出当中。
- 数字0表示标准输入-stdin
- 数字1表示标准输出-stdout
- 数字2表示标准错误-stderr
1.2.2 聊聊符号&
nohup ./program >/dev/null 2>&1 &
命令中有前后两个&,后面一个好理解,表示后台运行;前面一个可能理解困难一点,通过下面事例说明:
// stdout和stderr都直接送往文件a,a文件会被打开两遍,由此导致stdout和stderr互相覆盖。
nohup ./program >a 2>a &// stdout直接送往文件a,stderr是继承了FD1的管道之后,再被送往文件a,a文件只被打开一遍,就是FD1将其打开,效率更高
nohup ./program >a 2>&1 &
所以第一个&符号表示标准错误共用了标准输出的管道,提高IO效率。
1.2.3 回到黑洞/dev/null
nohup ./program >/dev/null 2>&1 &
上述命令就是表示标准输出和错误都不要,丢进黑洞,让他消失的无影无踪。
1.3 /dev/null测试
1.3.1 原始测试
有一个shell脚本如下,其中t会提示命令不存在,date输出当前日期:
test.sh
t
date
执行./test.sh的结果
[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$./test.sh
./test.sh: line 1: t: command not found
2016年 01月 13日 星期三 23:23:40 CST
错误提示输到标准输出。
1.3.2 标准输出到1.log
[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$./test.sh >1.log
./test.sh: line 1: t: command not found
这时终端只输出了错误提示,标准输出重新定向到了1.log。
[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$ls
1.log test.sh[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$cat 1.log
2016年 01月 13日 星期三 23:33:52 CST
1.3.3 标准输出和错误都输入到1.log
[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$./test.sh >1.log 2>&1
这时终端啥都没有,标准输出和错误都重新定向到了1.log。
[dddd@e100069205247.zmf /alidata/www/wwwroot/apps/test]
$cat 1.log
./test.sh: line 1: t: command not found
2016年 01月 13日 星期三 23:42:18 CST
2 /dev/zero文件
介绍参考文章《Linux中的特殊文件-/dev/zero》
3 后记
到这里相信大家已经对重定向有了一个新的了解,以后碰到这方面的问题,应该可以不用再去百度了。欢迎大家拍砖。
Linux中的黑洞(black hole)-/dev/null相关推荐
- linux清空日志到黑洞,Linux中的黑洞(black hole)-/dev/null
转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50514018 1 /dev/null文件 1.1 维基百科关于/dev/null说明 ...
- 探秘Linux特殊设备文件:(/dev/null,/dev/zero,/dev/random,/dev/urandom等)
目录标题 第一章:设备文件简介(Introduction to Device Files) 1.1 设备文件概述(Overview of Device Files) 1.2 设备文件类型(Types ...
- linux主设备号作用是什么,linux 主设备号为1 以及/dev/null的介绍
介绍个特殊的字符设备,主设备号为1的设备 1 char Memory devices 1 = /dev/mem Physical memory access 2 = /dev/kmem Kernel ...
- linux gt txt内容为空,2gt;/dev/null和gt;/dev/null 2gt;amp;1和2gt;amp;1gt;/dev/null的区别...
一.区别: 2>/dev/null 意思就是把错误输出到"黑洞" >/dev/null 2>&1 默认情况是1,也就是等同于1>/dev/null ...
- Linux 输入输出重定向 2>/dev/null和>/dev/null 2>1和2>1>/dev/nul
From:https://www.cnblogs.com/520playboy/p/6275022.html 2>/dev/null 和 >/dev/null 2>&1 ...
- /dev/null 21 详解
原文出处:http://blog.csdn.net/kaiwii/article/details/7308729 把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所 ...
- /dev/null 、/dev/zero、/dev/random、/dev/urandom
Linux中的虚拟设备/dev/null./dev/zero./dev/random和/dev/urandom /dev/null 利用/dev/null来清除不必要的输出 把/dev/null看作& ...
- nohup sh xxx.sh /dev/null
nohup sh xxx.sh &>/dev/null & 或者其它类似写法 nohup ./xxx [args] &>/dev/null & 这个命令的作 ...
- 深入解析Linux中的fork函数
1.定义 #include <unistd.h> #include<sys/types.h> pid_t fork( void ); pid_t 是一个宏定义,其实质是int, ...
最新文章
- 脑机接口技术重大突破!首次帮助瘫痪男子恢复运动和触觉
- 20172305 2017-2018-2 《程序设计与数据结构》实验三报告
- Android.mk文件编写
- PCM - partner channel management 的数据库表介绍
- 接力,智能指针也麻烦
- Articles for objccn.io. objc.io的完整、准确、优雅的中文翻译版本 http://objccn.io/
- xml getelementsbytagname php,用PHP编写和读取XML的几种方式
- 双域隔离技术何以助力物联网安全? | 人物志
- Java求1到任意一个数的阶乘和
- python输出文本和值_Python有没有函数打印当前对象的所有属性和值?_others_酷徒编程知识库...
- Linux内存管理 (3)内核内存的布局图
- 关于毕业论文格式修改若干问题
- mysql 触发器 instead of_AFTER触发器与INSTEAD OF触发器
- 解决C:\Users\Admin\AppData\Roaming\npm\nodemon.ps1
- 15.2,opencv绘制人脸识别框
- 离线语音交互技术路线之语音合成(TTS)篇
- Easy Deep Learning——卷积层
- HTML把cmyk转换为RGB,CMYK在线转换成pantone色卡号,cmyk转换对应潘通色号
- 百度地图2.0离线版的制作
- 投资学实务 期货日志及实践总结