我一直在寻找其他堆栈溢出问题,但无法得到任何工作。我有一个使用环境变量的python脚本。这个脚本在直接运行时完全按照计划工作,不过,我想暂时每分钟都将其作为cron作业运行。
当前在cron.d目录中有一个名为scrapers的文件,其中包含:
* * * * * root /usr/bin/python3.5 /code/scraper.py
这将运行python脚本,但脚本失败,因为在脚本中我使用了两个环境变量。
我读到我应该在cron文件中添加SHELL=/bin/bash,所以我做了,但这没有帮助。
SHELL=/bin/bash
* * * * * root /usr/bin/python3.5 /code/scraper.py
然后我读了
In the crontab, before you command, add . $HOME/.profile.
SHELL=/bin/bash
* * * * * . $HOME/.profile; root /usr/bin/python3.5 /code/scraper.py
但这导致了cron完全停止运行。向cron“发送”env变量的最佳方式是什么?
我要做的不是执行整个
~/.profile
而是移动必须在cron
作业和拥有概要文件的帐户之间共享的变量,然后我将这些变量都源于~/.profile
和cron作业。您在问题中显示的最后一次尝试的格式不正确。用户id应该紧跟在调度信息之后,但是您已经在用户id之前添加了概要文件的源代码,这肯定无法工作。
下面是我在这里测试的一个示例设置:
为了测试的目的,我把它设置为每分钟执行一次。用有意义的东西代替
someuser
。我使用的/tmp/t10/setenv
脚本有:/tmp/t10/test.py
文件包含以下内容:我的cron给我发电子邮件告诉我它运行的脚本的输出。我收到一封邮件,上面写着:
可以内联设置env变量:
* * * * * root ENV_VAR=VALUE /usr/bin/python3.5 /code/scraper.py
另一种方法是使用honcho来传递带有env变量的文件。
honcho -e /path/to/.env run /code/scraper.py
您可以通过以下方式指定两个环境变量:
env
是一个系统程序,它使用附加变量运行指定的程序:相关问题 更多 >
编程相关推荐