热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

crontab定时任务Java程序不执行问题linux下,项目部署在datamyscriptTestbin.back.sh其中脚本在项目下,可以正常执行vi


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

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



推荐阅读
author-avatar
mobiledu2502920327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有