ubuntu crontab 任务不执行,日志报错:mailed 46 bytes of output but got status 0x00ff from MTA#012
如题,在测试站上部署 laravel
项目,但 CMD
命令行任务未定时执行。按照网上的教程排查 crontab
服务状态, service cron status
,cron 服务显示运行中(active (running)
)。重启 cron
服务 service cron restart
,依然无效。
最后是排查 cron 的运行日志(/var/log/cron.log
),发现了报错信息 mailed 46 bytes of output but got status 0x00ff from MTA#012
。提示信息应该是说运行报错了,发送到管理员邮箱失败,当前没有安装邮件发送服务 postfix
,而非一位网友说的 cron把屏幕输出都发送到email了
。因为检查了当前项目执行用户 www
的所有 cron 任务,没有发现屏幕输出内容,output
目的地都是具体的日志文件。
也就是说,这个邮件发送失败的错误是在定时任务运行报错的时候才会提示。
即以下的 laravel 命令行任务是会报错的:
* * * * * cd /root/wwwroot/laravel && php artisan schedule:run >> /root/schedule.log 2>&1
但这个任务本身在项目目录下直接(root)执行 php artisan schedule:run
是没有报错的,意识到应该是权限的问题后,修改指令目录及日志存储目录:
* * * * * cd /var/www/html/laravel && php artisan schedule:run >> ../schedule.log 2>&1
观察 cron
运行日志 tail -f /var/log/cron.log
和任务输出日志,执行成功!