crontab执行结果未通过发送mail通知用户的方法
症状
在某台centos7主机上设置了某个crontab任务,但是到时间后运行mail后提示Nomail,即cron没有将任务的执行结果发送邮件通知到用户
排查过程
检查crontab日志
centos的日志由systemd进行管理的,因此可以通过systemctl来查看相关日志。
journalctl_COMM=crond--since=today
或者用root查看日志/var/log/cron
sudocat/var/log/cron|grep-v'/usr/local/qcloud/stargate/admin/start.sh'
最终我们在日志中会看到一行提示Jun2200:50:19localhostCROND[21181]:(lujun9972)MAIL(mailed102bytesofoutputbutgotstatus0x004b#012)
也就是邮件发送时失败了。
检查mail日志
查看/var/log/maillog日志会发现日志中提示Jun2200:50:19localhostpostfix/sendmail[21403]:fatal:parameterinet_interfaces:nolocalinterfacefoundfor::1
也就是说mail提示无法为主机上IPV6的地址::1发现对应的网卡
解决方法
注释掉/etc/hosts中::1对应的地址后发现mail的错误信息变成了postfix/postdrop[5487]:warning:unabletolookuppublic/pickup:Nosuchfileordirectory
经过搜索,只需要自己创建缺失文件再重启postfix服务即可。
sudomkfifo/var/spool/postfix/public/pickup sudochownpostfix:postdroppickup systemctlrestartpostfix.service
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。