博客统计信息

用户名:viplin
文章数:17
评论数:34
访问量:60456
无忧币:20
博客积分:530
博客等级:3
注册日期:2007-10-03

我的技术圈(0)

更多>>
/dev/null 2>&1 详解
2008-09-16 13:30:35
标签:Linux 休闲 职场
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://viplin.blog.51cto.com/241472/99568
      今天一个朋友突然在自己的维护的Linux中, /var/spool/cron/root 中看到了以下的内容:
30 19 * * * /usr/bin/**dcon.sh > /dev/null 2>&1
59 23 * * 1-7 /home/s**-log/squid-log.renew > /dev/null 2>&1
50 1 * * 1-7 /usr/local/src/**log.sh > /dev/null 2>&1
20 2 * * 1-7 /home/sq**-log/**log > /dev/null 2>&1
30 2 * * 1-7 /home/sq**-log/**log.01
30 22 * * * /bin/**sync > /dev/null 2>&1
00 8 * * 1-7 /home/**-log/rmcore > /dev/null 2>&1
00 16 * * 1-7 /home/**-log/rmcore > /dev/null 2>&1
他问我为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃.下面我就为大家来说一下, command > file 2>file  与command > file 2>&1 有什么不同的地方.
      首先~command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command  > file 2>file 这样的写法,stdoutstderr都直接送到file中, file会被打开两次,这样stdoutstderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道.
      而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdoutstderr的内容.
      从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.

本文出自 “石头西的Linux博客” 博客,请务必保留此出处http://viplin.blog.51cto.com/241472/99568

分享至
更多
一键收藏,随时查看,分享好友!
kstq77、ltaonet
2人
了这篇文章
类别:Linux(CentOS)技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 <<   1   2   >>   页数 ( 1/2 )  
2009-07-22 15:58:35
讲的超级经典,看就明白了。。。。

2009-08-30 15:28:07
受教了!!

2010-01-09 14:05:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2010-01-09 14:06:43
请问做shell编程有前途吗?

2010-01-12 14:55:50
>/dev/null 2>&1 不如直接写 >& /dev/null

 <<   1   2   >>   页数 ( 1/2 )  

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: