gpt4 book ai didi

python - cron任务设置环境变量失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:17 24 4
gpt4 key购买 nike

我正在尝试在服务器上安装一个新的 cron 任务。我可以通过命令行运行该进程,但无法通过 cron 运行它。这是由于在通过 cron 运行任务时未正确设置 PATH 和 PYTHONPATH 的环境变量。 (我实际上在处理服务器上的所有 cron 作业时遇到了这个问题,但为了简单起见,我只关注这个问题中的一个进程。)

这是进程的 cron 条目:

### procmon NLite ###
*/2 * * * * 。 ~/.bashrc; cd/var/networkip/nlite/proc_mon; .文件;光盘仓; ./proc_mon.py >/dev/null 2>&1

现在,proc_mon 目录中的 bashrc 包含:

BASEDIR=$PWD
KODIAK_ROOT=$BASEDIR/
BASEPATH=$KODIAK_ROOT

pathadd PYTHONPATH ${BASEDIR}/lib

因此,当 cron 任务运行时 - PYTHONPATH 应该 被重置,但这并没有发生。

还有其他几个较旧的服务器通过 cron 成功运行这些过程。
迄今为止尝试的解决方案:

  • 将成功运行 cron 任务的所有 bashrc 或 bash_profiles 与未能运行 crons 的服务器进行比较
  • 记录环境变量以确认这是问题所在

我不感兴趣的解决方案:

  • 设置环境变量的 cron 任务。有几个 procs 需要通过 cron 运行,并且都具有与该特定脚本相关的不同 PATH 和 PYTHONPATH 变量。这样做可能会变得非常困惑,并且不是一个好的长期解决方案,因为我在未来的服务器上安装了相同的 procs 和 crons。

更多信息:

  • 用于服务器失败 cron 的 Linux 发行版:CentOS 6.8 版
  • 服务器的 Linux 发行版 cron 成功:Red Hat Enterprise Linux Server 5.2 (Tikanga)

既然crons可以在其他服务器上工作,那么问题肯定有一个合理的解决方案。我也在 SuperUser 上,如果问题更适合该平台,请模组告诉我。

最佳答案

您需要在 bashrc导出您的变量,以便 python 进程可以看到它们:

BASEDIR=$PWD
export KODIAK_ROOT=$BASEDIR/
export BASEPATH=$KODIAK_ROOT

pathadd PYTHONPATH ${BASEDIR}/lib
export PYTHONPATH

关于python - cron任务设置环境变量失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42497617/

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