我的 crontab 中有以下工作:
0 */4 * * * /usr/bin/mysqldump -u root -p'PASSWORD' --all-databases | /bin/gzip -9 > /home/USER/_mysql_backup/`date "+\%F--\%H-\%M"`.databases.sql.gz ; rm -f /home/USER/_mysql_backup/`date '+\%F' --date '1 week ago'`.databases.sql.gz >/dev/null 2>&1
问题是它填满了我的系统日志。我认为添加>/dev/null 2>&1
会阻止记录作业,但是我是否还需要在 之前为上一个命令添加它;
?
答案1
如果 crontab 中的命令写入任何事物到 stdout,然后 cron 将获取该输出并尝试将其邮寄给您。显然您没有安装 MTA,因此 cron 无法发送邮件消息并将该失败记录到日志文件中。
如果您想查看 cron 作业正在向其标准输出写入什么内容,那么您必须安装一个 MTA:cron 会将输出邮寄给您,并且可能不会记录任何内容,因为邮件发送将会成功。
如果您不想看到输出,请将其重定向到/dev/null。不过,我仍然会设置一个 MTA,这样即使某些 cron 作业意外地产生输出,cron 也会很高兴。
crond(8) 联机帮助页描述了详细信息。