gpt4 book ai didi

python - cron 运行脚本时的环境变量

转载 作者:IT老高 更新时间:2023-10-28 20:29:15 27 4
gpt4 key购买 nike

我有一个使用环境变量的 Python 脚本。该脚本在直接运行时完全按计划工作;但是,我想暂时将其作为 cron 作业每分钟运行一次。

目前在我的 cron. 目录中,我有一个名为 scrapers 的文件,其中包含:

* * * * * root /usr/bin/python3.5 /code/scraper.py

这会运行 Python 脚本,但脚本失败,因为在脚本中我使用了两个环境变量。

我读到我应该将 SHELL=/bin/bash 添加到 cron 文件中,所以我做了,但这没有帮助。

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 的最佳方式是什么?

最佳答案

我要做的不是执行整个 ~/.profile 而是移动必须在您的 cron 作业和拥有配置文件的帐户之间共享的变量,然后我会在 ~/.profile 和 cron 作业中获取这些资源。

您在问题中显示的最后一次尝试格式不正确。用户 ID 应该紧跟在计划信息之后,但是您在用户 ID 之前添加了配置文件的来源,这肯定行不通。

这是我在这里测试过的示例设置:

*/1 * * * * someuser . /tmp/t10/setenv && /usr/bin/python /tmp/t10/test.py

出于测试目的,我已将其设置为每分钟执行一次。将 someuser 替换为有意义的内容。我使用的 /tmp/t10/setenv 脚本有这个:

export FOO=foovalue
export BAR=barvalue

/tmp/t10/test.py 文件有这个:

import os

print os.environ["FOO"], os.environ["BAR"]

我的 cron 将它运行的脚本的输出通过电子邮件发送给我。我收到了一封包含此输出的电子邮件:

foovalue barvalue

关于python - cron 运行脚本时的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42114982/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com