crontab和邮件
crontab是什么
linux下的定时任务执行
语法
1 | * * * * * command to be executed |
在线crontab
表达式生成:
最佳实践
输出
crontab
的输出分为三种:
- 1 代表标准输出(
stdout
) - 2代表错误输出(
stderr
) - & 表示等同于的意思,2>&1表示将标准错误输出重定向到标准输出stdout
重定向stdout
为何重定向
crontab
的输出如果没有重定向到/dev/null
就会发送邮件, crontab的标准输出一般不太关心,可以重定向。
邮件内容一般存储在 /var/mail/$user
中,如果不清理就会打满服务器根分区,最终导致机器无法登陆。
如何重定向
1 | 5 0 * * * sh /home/q/tools/bin/zip_homeq_log_daily.sh 1>/dev/null |
标准输出流重定向到空设备
1 | bash test.sh >test.out //脚本的标准输出写入到文件test.out ,标准错误输出直接打印在屏幕 等价于:bash test.sh 1>test.out |
不要重定向stderr
stderr
可能就是脚本执行过程中发生了错误, 这个是需要关注的, 最好不要重定向到空设备。
1 | 0 7 * * * sh /home/q/tools/bin/carnival/carnival.sh 2>/dev/null |
最好不要这样做!
当stderr
中有输出时,需要发送邮件,必须指定邮件的接收人。
1 | [root@yd-dev-api server]# crontab -e -u root |
当脚本执行发生错误的时候,邮箱里就有一封邮件。