理解/dev/null 2>&1

在crond任务中,我们经常见到这样的cron任务,如下:

 

0 0 1 * * * /users/gaohf/crond/cut_nginx_log.sh > /opt/local/var/nginx_cron 2>&1
 

这条命令的意思是将标准输出和错误输出全部重定向到/opt/local/var/nginx_cron文件中,你也可以置空到中,也就是将产生的所有信息丢弃。

 

0 0 1 * * * /users/gaohf/crond/cut_nginx_log.sh > /dev/null 2>&1

 

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的内容。

 

从IO效率上看,command > file 2>file的效率要比command > file 2>&1的效率低,所以在编写shell脚本时,较多时候我们会用command > file 2>&1这样的写法。

 

这样写的话,如果后面没有重定向,那么该条crond会给系统的root用户发送邮件,如果你执行频繁或者输入内容比较多的时候,就要注意了,你的 磁盘空间很快会被塞满。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值