2012-09-05 51 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

這讓我的環境變量回到原地。