crontab定时任务不执行,并且没有收到错误信息邮件

现象:

    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目录,使用sendmail restart命令准备重启一下mail服务,出现与“服务器时间不一致”错误,找资料使用touch /etc/mail/*错误提示消失,有新的错误:

Starting sendmail: 451 4.0.0 /etc/mail/sendmail.cf: line 91: fileclass: cannot open '/etc/mail/local-host-names': World writable directory
451 4.0.0 /etc/mail/sendmail.cf: line 588: fileclass: cannot open '/etc/mail/trusted-users': World writable derectory [FAILED]

而后使用
[root@redhat etc]# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
[root@redhat etc]# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

sendmail restart
mail服务正常启动,这样我就可以看到我的cron日志文件中描述发送的邮件(定时执行shell时产生的错误信息)写到/var/spool/mail的root文件中了。
4.执行定时任务,邮件中的提示信息为
/usr/local/mysql/CollectionDataBackup/CollectionDataBackup.sh: line 55: mysqldump: command not found
查找原因:由于mysqldump未安装在PATH定义的目录中。

将mysqldump路径添加到PATH中。

SHELL=/bin/bash
PATH=/usr/local/mysql/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

5.再次定时执行,ok备份成功

你可能感兴趣的:(Linux,Mysql)