我正在使用python脚本从Google电子表格中读取数据,当我使用shell命令运行时,脚本运行正常,但是在cron上安排脚本时却无法正常工作。
到目前为止我已经完成的检查清单
通过使用tail -f /var/log/syslog | grep CRON
这个命令,我已经看到计划是按时触发的
我已将脚本方法添加到另一个脚本中,该脚本在cron上运行良好,但在cron运行时仍然无法使用
cron声明
/home/ubuntu/.virtualenvs/python_3.5/bin/python /location/script_name.py
还有其他方法可以检查为什么它不能从cron计划中运行,但可以从shell命令中正常运行。
答案 0 :(得分:1)
从@stovfl获得建议后,我在此行中添加了>> /tmp/cron.log 2>&1
/home/ubuntu/.virtualenvs/python_3.5/bin/python /location/script_name.py >> /tmp/cron.log 2>&1
使用我的cron语句并检查日志文件,我发现我没有使用用于json身份验证文件的显式路径,尽管它位于项目文件夹中,所以使用shell命令运行它的时间很好。如下所示使用了代码
credentials = ServiceAccountCredentials.from_json_keyfile_name('file_name.json')
,因此当cron发射该脚本时,它无法获取认证文件的位置,因此无法运行。 然后我像下面一样改变
credentials = ServiceAccountCredentials.from_json_keyfile_name('location_of_file/file_name.json')
现在它像cron和shell命令中的符咒一样工作