linux定时任务生产java服务无法执行问题群友案例
linux定時(shí)任務(wù)crond export變量問題群友案例
來自網(wǎng)友兄弟 北京@Grady(254553457) 的總結(jié)。
1)我寫了一個(gè)重啟resin的腳本,由于業(yè)務(wù)原因,需要定時(shí)在某一個(gè)時(shí)間重啟下resin服務(wù)器,于是就在
crontab里配置了如下內(nèi)容:
50 17 * * 1-5 root /usr/local/bin/resin_restart.sh
其中,resin_restart.sh內(nèi)容如下:
#!/bin/sh
/usr/local/bin/xxresin_stop.sh
/usr/local/bin/xxresin_start.sh
2)有問題的時(shí)刻到來了,服務(wù)器雖然定時(shí)起來了,但是卻報(bào)了如下錯誤:
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.
但是,明明已經(jīng)在profile里配置了環(huán)境變量,為啥還找不到呢。折騰了需求沒有搞定。
3)后來在QQ交流群114580181,找到了熱心下老男孩老師,并請教,得到的回答是:
由于export變量問題導(dǎo)致:具體為,crontab執(zhí)行shell時(shí)只能識別為數(shù)不多的系統(tǒng)環(huán)境變量,
普通環(huán)境變量一般是無法識別的,如果在編寫的腳本中需要使用變量,最好使用export重新聲明下該變量,
以確保腳本正確執(zhí)行。以后作為一個(gè)開發(fā)基本規(guī)范寫上。
------------------------
4)然后我在resin重啟腳本里重新定義了下環(huán)境變量,腳本如下:
#!/bin/sh
#下面就是環(huán)境變量定義
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)經(jīng)過測試,定時(shí)任務(wù)此時(shí)順利重啟,在這里非常感謝老男孩老師給與的支持。
?
總結(jié)
以上是生活随笔為你收集整理的linux定时任务生产java服务无法执行问题群友案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Microsoft Azure学习之旅
- 下一篇: linux 其他常用命令