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

AWS Ubuntu环境下Cron无法运行Python脚本问题求助

解决Cron定时任务不执行Python脚本的排查思路

我之前在AWS Ubuntu上也踩过Cron的类似坑,给你一步步梳理排查方向:

  • 先搞定路径问题,别用~/
    Cron的执行环境不识别~这种Shell简写,建议把脚本路径换成绝对路径。先执行echo $HOME拿到你的用户目录绝对路径(比如/home/ubuntu),然后把定时任务改成:

    * * * * * /usr/bin/python3 /home/ubuntu/Cloudtest/main.py
    

    另外,脚本里如果有相对路径引用(比如读取同目录下的文件),也要改成绝对路径,不然Cron找不到。

  • 重定向输出到日志,抓错误信息
    Cron默认不会把输出打印到你的当前Shell(它是后台独立运行的),所以你看不到test很正常。把输出和错误重定向到日志文件,就能知道问题出在哪:

    * * * * * /usr/bin/python3 /home/ubuntu/Cloudtest/main.py >> /home/ubuntu/cron_test.log 2>&1
    

    等1分钟后查看日志:cat /home/ubuntu/cron_test.log,里面会有脚本的输出或者报错(比如找不到模块、权限不足)。

  • 检查Cron服务是否在运行
    先确认Cron服务没挂掉:

    sudo systemctl status cron
    

    如果显示inactive,就启动它:

    sudo systemctl start cron
    sudo systemctl enable cron  # 设置开机自启
    
  • 查看Cron系统日志,确认任务是否被触发
    Ubuntu的Cron运行记录存在/var/log/syslog里,用这个命令过滤:

    grep CRON /var/log/syslog
    

    你能看到Cron是否尝试执行你的任务,比如类似(ubuntu) CMD (/usr/bin/python3 /home/ubuntu/Cloudtest/main.py)的记录,说明任务已经触发;如果有报错,也会在这里显示(比如权限问题)。

  • 排查环境变量差异
    手动运行Shell时的环境变量和Cron的不一样,比如PATH更窄,或者你手动装的Python依赖不在Cron的环境里。可以在Cron命令里先加载你的Shell环境,比如:

    * * * * * source ~/.bashrc && /usr/bin/python3 /home/ubuntu/Cloudtest/main.py
    

    或者在Python脚本开头直接指定依赖的绝对路径(如果有第三方库的话)。

  • 确认文件权限
    确保你的main.py能被Cron的执行用户(默认是你当前用户)读取:

    ls -l /home/ubuntu/Cloudtest/main.py
    

    如果权限是-rw-------,那没问题;如果是其他情况,比如-rw-r--r--也可以,必要的话调整权限:

    chmod 644 /home/ubuntu/Cloudtest/main.py
    

内容的提问来源于stack exchange,提问作者Mohamad Chahal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:32:41