crontab执行结果未通过mail通知用户
症状
在某台 centos7 主机上设置了某个 crontab 任务,但是到时间后运行 mail
后提示 No mail
,即cron没有将任务的执行结果发送邮件通知到用户
排查过程
检查
crontab
日志centos的日志由
systemd
进行管理的,因此可以通过systemctl
来查看相关日志。journalctl _COMM=crond --since=today
或者用root查看日志
/var/log/cron
sudo cat /var/log/cron |grep -v '/usr/local/qcloud/stargate/admin/start.sh'
最终我们在日志中会看到一行提示
Jun 22 00:50:19 localhost CROND[21181]: (lujun9972) MAIL (mailed 102 bytes of output but got status 0x004b#012)
也就是邮件发送时失败了。
检查
mail
日志查看
/var/log/maillog
日志会发现日志中提示Jun 22 00:50:19 localhost postfix/sendmail[21403]: fatal: parameter inet_interfaces: no local interface found for ::1
也就是说
mail
提示无法为主机上 IPV6 的地址::1
发现对应的网卡
解决方法
注释掉 /etc/hosts
中 ::1
对应的地址后发现mail的错误信息变成了 postfix/postdrop[5487]: warning: unable to look up public/pickup: No such file or directory
经过搜索,只需要自己创建缺失文件再重启 postfix
服务即可。
sudo mkfifo /var/spool/postfix/public/pickup sudo chown postfix:postdrop pickup systemctl restart postfix.service