cronjob 无法找到 .bashrc 中定义的环境变量

cronjob 无法找到 .bashrc 中定义的环境变量

我有一个非常简单的需求,我试图寻找解决方案,但无法得到任何标准定义的解决方案。我想知道的是,对于下面的问题,解决方案是什么correct

问题:我需要使用 crontab 运行 cronjob(这是一个 python 脚本)。

使用 crontab -ei 将这一行添加到我的 cron 文件中:

* * * * * /usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

脚本启动了,但是它里面使用了环境变量。我在日志文件中收到一条错误,指出环境变量未定义?

我应该在哪里定义我的环境变量?我甚至尝试定义,.bashrc但仍然出现相同的错误。cronjob 找不到它。

我错过了什么?

答案1

不要将变量定义放在两个地方,而是将程序调用包装在一个简单的bash脚本中,该脚本提供~/.bashrc

#!/bin/bash
source $HOME/.bashrc
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1  

chmod +x脚本,然后从您的 运行它crontab

答案2

编写一个小型 bash 脚本,mypythonscript其内容如下:

#!/bin/bash
set ENVIRONMENT_VARIABLE_1=...
set ENVIRONMENT_VARIABLE_2=...
/usr/bin/python /srv/x/y/src/run.py > /tmp/listener.log 2>&1

使其可执行:

chmod +x mypythonscript

在 crontab 中将以下行替换为

* * * * * /path/to/mypythonscript

相关内容