linux定時任務crond export變量問題java
1)我寫了一個重啓resin的腳本,因爲業務緣由,須要定時在某一個時間重啓下resin服務器,因而就在
crontab裏配置了以下內容:linux
50 17 * * 1-5 root /usr/local/bin/resin_restart.sh
其中,resin_restart.sh內容以下:nginx
#!/bin/sh /usr/local/bin/xxresin_stop.sh /usr/local/bin/xxresin_start.sh
2)有問題的時刻到來了,服務器雖然定時起來了,可是卻報了以下錯誤:shell
Resin can't load com.sun.tools.javac.Main. Usually this means that the JDK tools.jar is missing from the classpath, possibly because of using a JRE instead of the JDK. You can either add tools.jar to the classpath or change the compiler to an external one with <java compiler='javac'/> or jikes.
可是,明明已經在profile裏配置了環境變量,爲啥還找不到呢。折騰了需求沒有搞定。服務器
3)後來通過測試和在google上尋找得知:測試
因爲export變量問題致使:具體爲,crontab執行shell時只能識別爲數很少的系統環境變量, 普通環境變量通常是沒法識別的,若是在編寫的腳本中須要使用變量, 最好使用export從新聲明下該變量, 以確保腳本正確執行。之後做爲一個開發基本規範寫上。
4)而後我在resin重啓腳本里從新定義了下環境變量,腳本以下:this
#!/bin/sh #下面就是環境變量定義 JAVA_HOME="/opt/jdk1.6.0_18" CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/nginx-0.7.61/sbin:/opt/jdk1.6.0_18/bin:/opt/resin-3.0.25/bin:$PATH export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASSPATH /usr/local/bin/xxresin_stop.sh /usr/local/bin/xxresin_start.sh
5)通過測試,定時任務此時順利重啓google