【发布时间】:2018-06-26 05:28:55
【问题描述】:
我们都知道 cron 会忽略“.bashrc”和“.bash_profile”中定义的变量,所以我们必须在 cron 中定义它。我不断地做类似问题https://unix.stackexchange.com/questions/67940/cron-ignores-variables-defined-in-bashrc-and-bash-profile 中所写的相同内容,但 .bashrc 中的全局变量仍然无法正常工作。我找到了执行它的方法——通过使用“set +a”bashrc 脚本定义 sh 脚本。但是“来源”仍然不起作用。
SHELL=/bin/bash
BASH_ENV=/root/.bashrc
PATH=:/opt/spark/spark-2.2.0-bin-hadoop2.7/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
SPARK_HOME=/opt/spark/spark-2.2.0-bin-hadoop2.7
MAILTO=root HOME=/
# m h dom mon dow command
* * * * * /bin/bash -c 'source $HOME/.bashrc; echo "SPARK_HOME: '$SPARK_HOME'"; echo "JAVA_HOME: '$JAVA_HOME'"' > /var/log/file.log 2>&1
# DO NOT DELETE LAST LINE
返回日志文件
SPARK_HOME: /opt/spark/spark-2.2.0-bin-hadoop2.7
JAVA_HOME:
还尝试在交互模式下执行此操作,因为它是由 mklement0
source .bashrc in a script not working
* * * * * /bin/bash -i source /root/.bashrc; echo $JAVA_HOME > /var/log/file.log 2>&1
如您所见,SPARK_HOME 是在 crontab 中定义的,而 JAVA_HOME 仅在 .bashrc 中定义。 P.S 在 bashrc java home 中定义为“export JAVA_HOME=/usr/jdk1.8.0_131” 当我将 JAVA_HOME 更改为 SPARK_HOME 时,所有不同的 cron 作业都可以正常工作,尝试了不同的 crontab 作业,但答案与以前相同。
ubuntu 内核版本是
uname -a
Linux 6101c32b9243 4.9.62-21.56.amzn1.x86_64 #1 SMP Thu Nov 16 05:37:08 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
【问题讨论】: