You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决crontab执行脚本删除S3存储桶对象不生效的问题

问题原因及对应解决方法

  • crond服务未启动
    你执行ps aux | grep crond的输出仅包含grep自身进程,说明系统的定时任务服务没有运行,配置的cron规则自然不会被触发。
    解决方法:执行以下命令启动crond服务并设置开机自启:
sudo systemctl start crond
sudo systemctl enable crond
  • 执行用户的AWS凭证缺失
    你通过sudo crontab -e配置的定时任务是以root用户身份执行,而你手动运行脚本时用的是ec2-user用户。你代码中boto3.Session()用的是默认凭证链,正常运行时的凭证大概率存储在ec2-user的~/.aws/credentials文件中,root用户没有对应的AWS访问凭证,就算crond正常运行也会出现鉴权失败。
    解决方法:可以把定时任务配置在ec2-user的crontab中(直接执行crontab -e不要加sudo),或者为root用户配置对应的AWS访问凭证。
  • 脚本内路径不匹配
    你的job.sh中写的是python s3delete.py,cron执行定时任务时默认工作目录不是/home/ec2-user,会找不到s3delete.py文件导致执行失败。同时cron的PATH环境变量和用户登录态的PATH不同,也可能出现找不到python命令的问题。
    解决方法:修改job.sh补充绝对路径,参考如下:
#!/bin/bash
cd /home/ec2-user
/usr/bin/python s3delete.py

注:可执行which python获取你环境中python的实际绝对路径替换上面的示例路径

  • 日志配置不全导致看不到报错
    你原来的日志重定向规则只捕获了标准输出,错误输出没有被重定向,所以脚本执行报错时日志文件也会是空的。修改cron规则把错误输出也重定向即可排查后续问题:
*/1 * * * * /home/ec2-user/job.sh > /tmp/s3delete.log 2>&1

内容的提问来源于stack exchange,提问作者Some Java Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 01:54:05