无法通过 crontab 执行 python 2.7 脚本,但可以手动执行.什么给?



我写了一个python脚本2.7版本,在Ubuntu操作系统中,如果我手动执行它,它将成功运行,但是当我将其放入cronjob时,它将不起作用 - 您将获得随机库路径或模块未找到错误,具体取决于您导入/包含的内容。我已经阅读了堆栈溢出几乎相同的问题,但提供的解决方案仍然对我不起作用。Python 脚本未在 crontab 中执行

这只是一个简单的错误,但起初很难知道为什么。

Traceback (most recent call last):
File "/var/www/project/delete.py", line 263, in <module>
pyquery('new')
NameError: pq 'new_data' is not defined

一般来说(python(脚本是位置敏感的。这与始终在脚本中使用绝对路径有关,但不完全相同。您的 cron 作业可能需要在运行脚本之前将其 cd 到存储脚本的特定目录。

当 Cronjob 运行时,它使用您的主目录作为当前目录。因此,如果您要将脚本放在主目录中,它将起作用。在这种情况下,脚本使用相对路径,假设它是相对于脚本的位置,但实际上是相对于主目录的根目录,因为那是 cron 正在使用的工作目录,这就是为什么脚本在我的主目录的根目录中工作的原因。

因此,如果你必须在主目录以外的目录中运行它,在你的cronjob中,你需要cd到你的脚本目录并运行它,如以下示例所示:

* * * * * cd /var/www/clientfolder/ && /usr/bin/python /var/www/clientfolder/your_python_script.py >> /var/www/clientfolder/your_python_script.log

了解原因很重要。它现在应该可以工作了!

如果您有其他与脚本执行环境无关的问题,您可能需要阅读这篇非常好的文章 CronJob 未运行

来源:https://www.digitalocean.com/community/questions/unable-to-execute-a-python-script-via-crontab-but-can-execute-it-manually-what-gives

祝你好运

相关内容

最新更新