这几天在搞计划任务的相关需求:
1.利用redis的list做消息队列;
2.设置计划任务的执行时间,*/10,10-16,*,*,*
因为对crontab了解不多,导致在使用的过程中出现了些许问题:
1.通过crontab执行的脚本,总是失败,按照输出的内容判断,代码只执行了一部分,另一部份无论如何都不执行;
2.相同的脚本(代码完全复制,只有函数名不同)在其他两个情况下都能正常执行,例如使用yii的command执行命令;又如直接通过接口访问该方法,都可以正常执行;
问题解决的思路:
1.首先查看了cron的日志,/var/log/cron
该日志并没有发现有用的信息,日志中显示脚本按时执行了,没有抛出错误信息。正常情况下还应该发送系统邮件,但是查询邮件/var/spool/cron/并没有发现root相关邮件;
2.通过百度得知在/var/log/messages中也会有相关信息
查询messages得到信息:crond: sendmail: fatal: parameter inet_interfaces: no local interface found for ::1百度得知由于inet_interfaces的相关配置异常,导致没有发送系统邮件;
修改main.cf文件内容
vi /etc/postfix/main.cf
发现配置为:
inet_interfaces = localhost
inet_protocols = all
改成:
inet_interfaces = all;重启
至此,重启了脚本,终于先在日志中看到了已发送系统邮件的信息,然后在邮件中看到了错误信息;ffmpeg command not found.....
目前没有确定为什么在计划任务中执行ffmpeg会提示命令没有找到,解决方法是使用ffmpeg的相对路径执行命令,例如:/usr/local/bin/ffmpeg -i ..........
网友评论