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定时任务执行失败的问题。
以上就是CentOS 7.9下crontab定时任务执行Python脚本失败是什么原因?的详细内容,更多请关注知识资源分享宝库其它相关文章!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。