Linux定时任务crontab中命令不输出与输出到/dev/null有什么不同

比如,一个定时任务中以下三条命令的结果和对主机的影响(包括终端显示、磁盘空间、内存以及CPU使用率之类)有什么不同?
00 00 * * * /usr/sbin/ntpdate 192.168.5.110
00 00 * * * /usr/sbin/ntpdate 192.168.5.110 > /dev/null
00 00 * * * /usr/sbin/ntpdate 192.168.5.110 > /dev/null 2>&1

第1个回答  推荐于2017-11-26
只是同步时间的话,没有太大区别
第一条,执行会有输出,当然,ntpdate是不会记录输出到文件的,当crontab调用时,错误和标准输出会写成mail通知你
第二条,标准输出重定向到/dev/null,关于/dev/null,你可以查一下资料看看详细的解释,我们把它理解为一个空文件吧,输出到这里就找不回来了
第三条,与第二条类似,2>&1是指将标准信息输出路径指定为错误信息输出路径,那么标准输出和错误输出都重定向到/dev/null,也就是不记录任何信息了

关于你提到对主机的影响,从ntpdate来讲,区别并不大,那么我们考虑另外一种环境,如果定时任务执行的是一个需要写大量日志的程序,那么就会存在你所讲的cpu、内存、io和磁盘占用等问题了。所以,当我们不需要记录额外信息的话,应该把标准输出和错误重定向到/dev/null追问

我只是将NTP同步拿来做例子。
第一条,如果我本机没有安装Mail呢?还会有其他日志或者脚印的文件吗?存放在哪儿?我知道第一条中的命令在Shell控制台执行的话是有输出的。。

追答

mail指的是系统邮件,当你登入的时候会通知你,其它的应该包含了message或syslog,这里会记录crontab的执行记录

追问

我是想问没有mail的情况下语句本身是否会产生记录,crontab的执行记录无论啥样都应该有的吧,所以应该不在考虑范围之内。

本回答被提问者采纳
相似回答