[英]Unable to execute a python 2.7 script via crontab, but can execute it manually. What gives?
我编写了一个 python 脚本 2.7 版本,在 Ubuntu 操作系统中,如果我手动执行它,它将成功运行,但是当我将它放入 cronjob 时,它将无法工作 - 您将收到随机库路径或未找到模块的错误,具体取决于您的内容导入/包含。 我已经阅读了几乎相同的问题 stackoverflow,但提供的解决方案仍然对我不起作用。 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 not running
资料来源: https : //www.digitalocean.com/community/questions/unable-to-execute-a-python-script-via-crontab-but-can-execute-it-manually-what-gives
祝你好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.