首页 > 文章列表 > CentOS 7.9下crontab定时任务执行Python脚本失败的原因及解决方案

CentOS 7.9下crontab定时任务执行Python脚本失败的原因及解决方案

493 2025-03-18

CentOS 7.9下Crontab定时任务执行Python脚本失败:工作目录问题及解决方案

CentOS 7.9下crontab定时任务执行Python脚本失败是什么原因?

本文探讨在CentOS 7.9系统中,使用Python 3.8.6虚拟环境运行脚本时,crontab定时任务执行失败的问题。 手动运行脚本正常,但crontab任务却报错FileNotFoundError: [Errno 2] No such file or directory: 'report.json'以及browsermobproxy.exceptions.ProxyServerError: can't connect to browsermob-proxy。此外,还出现allure: command not found警告,但这不影响核心功能。

问题根源在于crontab任务的工作目录。crontab默认工作目录是用户主目录,而非脚本所在目录。因此,脚本无法在主目录找到运行时生成的report.json文件。

解决方案:明确指定脚本工作目录

修改crontab命令,在执行Python脚本前,使用cd命令切换到脚本所在目录:

0 8,15,21 * * * cd /home/lawrence/workcode/Auto_Cashier && ./venv/bin/python3 run_case.py

此命令先将工作目录切换到/home/lawrence/workcode/Auto_Cashier,再执行run_case.py脚本。 这样,脚本就能正确访问report.json文件。

其他错误排查:

  • browsermobproxy.exceptions.ProxyServerError: can't connect to browsermob-proxy: 此错误与网络连接或browsermob-proxy服务有关,需要单独排查网络配置和browsermob-proxy服务状态。

  • allure: command not found: 此警告表示系统未安装allure测试报告生成工具。 如果不需要allure报告,可以忽略此警告。

用户提供的shell脚本方法本身没有问题,但由于工作目录设置错误,导致了同样的FileNotFoundError。 通过明确指定工作目录,就能有效解决此类crontab定时任务执行失败的问题。

来源:1741838114