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