Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2146463
  • 博文数量: 227
  • 博客积分: 10521
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-20 14:59
个人简介

低调做人,高调做事!

文章分类

全部博文(227)

文章存档

2013年(4)

2012年(8)

2011年(16)

2010年(24)

2009年(92)

2008年(83)

分类: LINUX

2009-04-14 22:29:49

在crond任务中,我们经常见到这样的 cron 任务,如下:
00 5 * * * /usr/sbin/ntpdate 222.168.10.10  >  /opt/time_cron  2>&1

这条命令的意思是将标准输出和错误输出全部重定向到 /opt/time_cron 文件中,你也可以置空到/dev/null中,也就是将产生的所有信息丢弃,这里需要解释下:

0,标准输入
1, 标准输出(stdout)
2,标准错误输出(stderr)

当然也可以这么写:command > file 2>file,,那么这样和 command > file 2>&1 的区别是:

command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中,这样的写法会将 stdout和 stderr 都直接送到file中, file会被打开两次,这样 stdout 和 stderr 会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道.
command > file 2>&1 的意思就是将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容.


注意:
    1,从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法。

    2,这样写还有一个好处就是,如果后面没有任何重定向,那么该条crond会给系统的root用户发邮件,如果你执行频繁或者输入内容比较多的时候,就要注意了,你的磁盘空间很快会被塞满。
阅读(2118) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

huifeideluotuo2009-04-16 18:41:55

谢谢,要的就是这种效果!

chinaunix网友2009-04-15 23:43:07

文件描述符 1 代表: 一个程序的标准输出。 文件描述符 2 代表: 一个程序的标准错误输出