环境变量在cron中看不到

时间:2012-09-05 14:09:02

标签: java linux cron

所以我遇到了一个问题。我的工作场所在其机器上使用环境变量,我们最近将我们的dev / prod服务器切换到基于unix的解决方案(RHEL 6),我们试图让我们的一些旧程序与cron一起运行。 envir变量在盒子本身上运行(例如:Server1 = dev-server.intranet.net或者其他类似的东西)但是我们遇到了cron到位的问题。

实施例

java -jar MyProgram.jar -- Works fine

MyProg.sh - 工作正常

JAVA_HOME=/usr/data/java/current
PATH=$JAVA_HOME/bin

export JAVA_HOME
export PATH

java -jar /usr/data/apps/MyProg/MyProg.jar

从cron调用MyProg.sh时,它不起作用,因为它根本看不到envir变量。

有人可以提供一些有关如何使用cron工作的见解吗?

感谢。

3 个答案:

答案 0 :(得分:1)

不需要设置JAVA_HOME和PATH

你能试试吗

/usr/data/java/current/java -jar /usr/data/apps/MyProg/MyProg.jar

答案 1 :(得分:0)

我最后通过

来解决这个问题

source /etc/profile.d/MyVars.sh

让我的环境变量重新到位。

答案 2 :(得分:-1)

Cron总是在一个空的环境下运行。 HOME,LOGNAME和SHELL已设置;和一个非常有限的路径。

为了使所有环境变量可用,我们需要在运行给定命令之前加载〜/ .profile文件。

就我而言,我使用了以下命令。

40 11 * * * . $HOME/.profile; /shellPath/bin/execute-job.sh START 5 >> /home/sampleuser/cron.log 2>&1

execute-job.sh

nohup java -Dlog4j.configuration=file:/shellPath/conf/log4j.properties -cp /shellPath/libs/scheduler-0.1.jar  com.scheduler.Scheduler $1 $2 > /dev/null 2>&1 &