简体   繁体   English

在cron中看不到的环境变量

[英]Environmental variables not seen in a cron

So I've run into a bit of an issue. 所以我遇到了一个问题。 My workplace uses environmental variables on it's machines and we've recently switched our dev / prod servers to unix-based solutions (RHEL 6) and we're trying to get some of our old programs to run with a cron. 我的工作场所在其机器上使用环境变量,并且我们最近将开发/生产服务器切换为基于Unix的解决方案(RHEL 6),并且我们试图使某些旧程序与cron一起运行。 The envir variables are running on the box itself (Example: Server1=dev-server.intranet.net or something along those lines) but we're running into issues where a cron is in place. envir变量本身在框上运行(例如:Server1 = dev-server.intranet.net或类似内容),但是我们遇到了存在cron的问题。

Example. 例。

java -jar MyProgram.jar -- Works fine

MyProg.sh - 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

When calling MyProg.sh from a cron, it doesn't work, as it can't see the envir variables at all. 当从cron调用MyProg.sh时,它根本不起作用,因为它根本看不到envir变量。

Can someone offer some insight to how to make this work with a cron? 有人可以提供一些见解,以了解如何使用cron进行这项工作吗?

Thanks. 谢谢。

JAVA_HOME and PATH doesn't need to be set 不需要设置JAVA_HOME和PATH

Can you try 你能试一下吗

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

I ended up solving this problem by doing a 我最终通过做一个解决了这个问题

source /etc/profile.d/MyVars.sh 来源/etc/profile.d/MyVars.sh

which got my environmental variables back in place. 这使我的环境变量恢复原状。

Cron always runs with a mostly empty environment. Cron总是在几乎是空的环境下运行。 HOME, LOGNAME, and SHELL are set; HOME,LOGNAME和SHELL已设置; and a very limited PATH. 和非常有限的路径。

In order to available all environment variable, We need to load ~/.profile file before running given command. 为了使所有环境变量可用,我们需要在运行给定命令之前加载〜/ .profile文件。

In my case i used below commands. 就我而言,我使用以下命令。

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 &

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM