Amazon Linux EC2实例中Cron定时任务未执行问题求助
Amazon Linux EC2 Cron任务未执行且无日志的排查方案
1. 确认Cron服务状态
- 执行
systemctl status crond检查服务是否运行,若未启动,执行systemctl start crond启动服务,再用systemctl enable crond设置开机自启。
2. 验证任务命令与脚本可用性
- 手动执行Cron中的完整命令:
/usr/bin/python3 /home/ec2-user/set_access_token.py > /home/ec2-user/access_token_logs.txt,排查脚本本身是否存在报错(比如依赖缺失、相对路径问题)。 - 检查脚本权限:执行
ls -l /home/ec2-user/set_access_token.py,确保ec2-user拥有执行权限,无权限则执行chmod +x /home/ec2-user/set_access_token.py。 - 注意:Cron执行时的环境变量与终端环境不同,脚本内所有文件、命令调用务必使用绝对路径。
3. 开启Cron日志记录
Amazon Linux默认未启用Cron日志,需手动配置:
- 编辑rsyslog配置文件:
vi /etc/rsyslog.d/cron.conf,添加或确认以下内容:
cron.* /var/log/cron.log
- 重启rsyslog服务:
systemctl restart rsyslog,后续Cron的执行日志会输出到/var/log/cron.log,便于排查任务触发情况。
4. 修正日志重定向规则
当前命令仅捕获标准输出,错误信息会丢失,修改为同时捕获标准输出和错误输出:
51 7 * * * /usr/bin/python3 /home/ec2-user/set_access_token.py >> /home/ec2-user/access_token_logs.txt 2>&1
修改后保存Cron任务,等待下次执行后查看日志中的错误信息。
5. 确认系统时区设置
- 执行
date -u验证系统时间是否为UTC,若时区不符,执行timedatectl set-timezone UTC调整为UTC时区,确保Cron任务时间与系统时间一致。
内容的提问来源于stack exchange,提问作者Anuj Panchal
相关产品推荐
相关产品推荐

