linux中用crontab定时任务启动jar无效的问题

发布时间 2023-06-22 19:04:35作者: 哩个啷个波

原文链接:https://blog.csdn.net/for_the_time_begin/article/details/113940508

问题:

使用linux系统中的定时任务执行jar包,但是经过测试发现一只不能正常执行,发现定时任务crontab是正常运行的,因为再写一个测试用的定时任务指定时间在指定的目录位置下生成一个文件,或者向文件中追加内容,这样测试是没有问题的。

原因:

修改前脚本内容如下:

nohup java -Xms512m -Xmx512m -jar /mnt/jar/xx-0.0.1-SNAPSHOT.jar &

检查了权限等各方面可能,更多详细排查内容点击这里 --->crontab不能执行的原因.md,一直都是脚本能执行,但是不产生jar的进程,如果在命令前后增加输出也能正常输出

手动执行则一切正常,最后怀疑是环境变量的问题

解决方式:

修改后的脚本内容如下:

source /etc/profile

nohup java -Xms512m -Xmx512m -jar /mnt/jar/xx-0.0.1-SNAPSHOT.jar &

主要增加了source /etc/profile用来引入环境变量

也就是需要使用绝对路径并且还需要指定jdk的路径,没有执行的原因就是执行jar的时候,需要加上jdk的路径

原文链接:https://blog.csdn.net/weixin_42976232/article/details/107373126

在创建定时任务时,所有的路径都需要写绝对路径,包括配置文件。若定时文件为定时执行sh文件,而sh文件中需要的配置文件也需要写绝对路径。
在linux服务器上新建jar的crontab 定时任务时,发现定时任务不生效,此时很有可能的原因是因为路径写的不准确,比如没五分钟执行一次hello.jar时,
此时应该执行的命令为:
crontab -e #新建定时任务

*/5 * * * * /usr/local/jdk1.8/bin/java -jar /test/tet.jar 1>> /log/do.log 2>> /log/err.log

释义:*/5 * * * * 这个不说了,有很多大神说的比我清楚。
/usr/local/jdk1.8/bin/java java可执行文件的绝对路径,JAVA_HOME的路径
/test/tet.jar 需要执行的jar文件的绝对路径
1>> log/do.log 执行日志打印位置
2>> log/err.log 异常日志所在路径