使用crontab执行python脚本时,有时会遇到脚本无法执行的问题。这是因为crontab在执行任务时使用的环境变量与我们在终端中使用的环境变量不同。具体来说,crontab使用的环境变量是非交互式(non-interactive)环境变量,而终端则使用交互式(interactive)环境变量。这导致了某些环境变量在crontab中不可用,从而影响了python脚本的执行。
如下图:
这段代码生成的执行命令是:
python /data/projects/xinjiang_titan/db_building/tests.py
通过在终端输入可以正常执行该脚本,且正常输出结果。然而加入crontab中每分钟执行一次时,却发现没有任何输出。
解决方案:
使用绝对路径来执行python脚本。我们需要找到python执行文件的路径:
然后将python用绝对路径来执行:
/root/anaconda3/envs/bigdata/bin/python /data/projects/xinjiang_titan/db_building/tests.py
再跑脚本就正常输出结果了。