2012-09-05 25 views
0

所以我遇到了一些问题。我的工作场所在其机器上使用环境变量,最近我们将dev/prod服务器转换为基于unix的解决方案(RHEL 6),我们试图让一些旧程序使用cron运行。 envir变量是在盒子上运行的(例如:Server1 = dev-server.intranet.net或者这些行的东西),但是我们遇到了cron已经存在的问题。在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工作?

谢谢。

+0

这不是一个真正的编程问题。这将是更适合superuser.com –

+0

您的诊断看起来不正确。如果变量是在'MyProg.sh'中定义和导出的,那么它们对于你开始的''java'进程是可见的,或者脚本本身运行的方式是可怕的。它有一个有效的shebang线吗? – tripleee

+0

它确实有shabang,我只是不小心在我的复制粘贴忽略它。我们的linux系统管理员一直在这一点上,他一直在撕裂他的头发。 –

回答

1

JAVA_HOME和PATH并不需要设置

你可以尝试

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

现在给我一个镜头,我会让你知道它是否工作,当我看到在cron运行后的日志在10:40 –

+0

“在线程主视图中的xception”com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链路故障 成功发送到服务器的最后一个数据包是0毫秒前,驱动程序尚未收到来自服务器的任何数据包。当它没有找到我的envir变量时会发生这种情况。 –

+0

你认为哪个环境变量控制了这个变量?你确定cron进程是作为同一个用户运行吗?你在服务器端日志中看到任何错误吗? –

0

最后我做一个

源/etc/profile.d/MyVars解决这个问题.sh

这让我的环境变量回到原地。