红联Linux门户
Linux帮助

crontab定时任务Java程序不执行问题

发布时间:2017-05-03 09:17:40来源:linux网站作者:俊逸vs小宝
Linux下,项目部署在/data/my/scriptTest/bin
./back.sh
 
其中脚本在项目下,可以正常执行
vi back.sh
#!/bin/sh
 
ulimit -n 65536
# cp运行备份jar
cp -f scriptTest.jar scriptTest_runtime.jar
# 执行程序,依赖jar放置在/data/my/scriptTest/lib下
# 程序入口 com.util.StartServer下
java -server -cp scriptTest_runtime.jar:log4jconf:../lib/commons-collections-3.2.1.jar:../lib/*.jar:../lib/MySQL-connector-java-5.1.26-bin.jar com.util.StartServer test_server
 
crontab定时任务,每日调用back.sh脚本,但是程序没有执行
crontab -e 配置任务,每日凌晨3点执行
0 3 * * * /bin/sh /data/my/scriptTest/bin/back.sh > /data/my/scriptTest/log/back.log
 
分析问题,查阅资料,crontab是无法自动获取jdk变量,要在java命令之前写入jdk绝对路径,而且要切换到要执行的sh路径下,我这个问题这两个条件缺一不可。
 
查看当前linux下java的绝对路径
whereis java
java: /usr/local/jre1.8.0_111/bin/java
 
重新修改back.sh脚本,添加程序所在路径和jdk的绝对路径
 
vi back.sh
#!/bin/sh
# crontab任务添加程序所在路径
cd /data/my/scriptTest/bin
 
ulimit -n 65536
 
# cp运行备份jar
cp -f scriptTest.jar scriptTest_runtime.jar
# 执行程序,依赖jar放置在/data/my/scriptTest/lib下
# 程序入口 com.util.StartServer下
# crontab任务添加jdk的绝对路径
/usr/local/jre1.8.0_111/bin/java -server -cp scriptTest_runtime.jar:log4jconf:../lib/commons-collections-3.2.1.jar:../lib/*.jar:../lib/mysql-connector-java-5.1.26-bin.jar com.util.StartServer test_server
 
重新配置crontab任务时间,成功执行java程序,可以查看执行日志
cd /data/my/scriptTest/log/back.log
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30467.html