现象:
crontab中定义的msqldump定时任务不能执行,没有收到错误信息邮件,查看日志/var/log/cron显示如下
CROND[15777]: (root) MAIL (mailed 33 bytes of output but got status 0x0043#012)
解决过程:
1.将shell脚本中的相对路径改为绝对路径,直接执行sh没有问题,用crontab-e进行定时处理,仍然无法进行备份。
2.使用mail命令查看root收到的邮件信息,没有新邮件提示。查看/var/spool/mail的root文件中的邮件信息,发现里面的数据没有更新,cron的log文件里面描述的出错信息的邮件都应该发送到上面说的root文件中,由此判断系统的邮件功能出现异常。
3.cd到/ect/rc.d/init.d目录,使用sendmailrestart命令准备重启一下mail服务,出现与“服务器时间不一致”错误,找资料使用touch/etc/mail/*错误提示消失,有新的错误:
Startingsendmail:4514.0.0/etc/mail/sendmail.cf:line91:fileclass:cannotopen'/etc/mail/local-host-names':Worldwritabledirectory4514.0.0/etc/mail/sendmail.cf:line588:fileclass:cannotopen'/etc/mail/trusted-users':Worldwritablederectory[FAILED]
而后使用
[root@redhatetc]#chmodgo-w//etc/etc/mail/usr/var/var/spool/var/spool/mqueue
[root@redhatetc]#chownroot//etc/etc/mail/usr/var/var/spool/var/spool/mqueue
再
sendmailrestart
mail服务正常启动,这样我就可以看到我的cron日志文件中描述发送的邮件(定时执行shell时产生的错误信息)写到/var/spool/mail的root文件中了。
4.执行定时任务,邮件中的提示信息为
/usr/local/mysql/CollectionDataBackup/CollectionDataBackup.sh:line55:mysqldump:commandnotfound
查找原因:由于mysqldump未安装在PATH定义的目录中。
将mysqldump路径添加到PATH中。
SHELL=/bin/bashPATH=/usr/local/mysql/bin:/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/
5.再次定时执行,ok备份成功