解决linux定时crontab执行java、jar 执行不了,没反应的问题 配置crontab中java环境变量

问题引入:公司有一个jar包在服务器上跑着,这个项目每过一段时间就会内存飚高,使用arthas也没分析出哪里的问题(本人技术有限),想了个笨方法,每天晚上12点将这个项目kill掉,然后重新启动,这样就不会内存飚高了,结果发现crontab执行的shell脚本时不能执行java这个指令。

问题很好解决,你认真看完我写的,如果解决不了,作者立马倒立洗头

出现的问题:使用crontab,执行一个shell脚本,shell脚本里面的内容是 java -jar 或者是 java HelloWorld 这样的指令,通过crontab -e 指定了执行的时间,但是到了时间java程序没有执行。但是直接使用 sh test.sh 执行这个脚本的时候,就可以执行里面的java -jar 或者是 java HelloWorld

问题原因:当使用定时任务执行的时候,不会用到linux中的环境变量,而是会使用自己的环境变量。所以我们需要在shell文件中配置一下java的环境变量

问题解决步骤

  1. 首先通过echo查看linux中配置的Java环境变量
echo ${JAVA_HOME}

在这里插入图片描述
这是我配置的环境变量。

  1. 在shell 脚本中 写入环境变量
#!/bin/bash

# 配置java环境变量

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.aarch64
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME 
export PATH

# 自己的业务代码
# 这里就是将java的版本信息输出到 data.log 中
nohup java -version >> data.log 2>&1
cd /root/shell
# 这里就是简单的将HelloWorld.class这个java文件执行了一遍,并将结果输出到data.log中
nohup java HelloWorld >> data.log 2>&1 || echo "Execution failed at $(date)" >> data.log

上述代码中 最重要的是 JAVA_HOME 这个变量,将这个变量的值替换成 你使用
echo "${JAVA_HOME}" 的值即可,然后将
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH
这三行复制进去

下面关键的来了,最好不要使用绝对路径

使用 cd /自己的工作目录 然后再执行java -jar 或者是 java 指令

OK!

  1. 调试
49 22 * * *  /root/shell/test.sh >> /root/shell/data.log 2>&1

如果以上的办法都不能解决你的困扰,请使用date 命令看一看你的linux上的时间是否同步

同步时间指令

ntpdate ntp.aliyun.com

如果解决了您的困扰,点个赞吧,让更多人看到,作者也是被这个困扰了一下午。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
crontab是一个定时任务管理工具,可以用来定时执行一些命令或脚本。而java -jar则是用来执行Java程序的命令。如果你想要使用crontab定时执行Java程序,可以将java -jar命令写入一个脚本,然后将该脚本添加到crontab任务。但是,在实际使用过程,可能会遇到一些问题,比如你提到的无法执行Java程序的问题。这可能是因为在执行Java程序之前,需要先引入Java环境变量。你可以在脚本添加引入环境变量的命令,例如: ``` #!/bin/bash export JAVA_HOME=/path/to/java/home exportcrontab是一个定时任务管理工具,可以用来定时执行一些命令或脚本。而java -jar则是用来执行Java程序的命令。如果你想要使用crontab定时执行Java程序,可以将java -jar命令写入一个脚本,然后将该脚本添加到crontab任务。但是,在实际使用过程,可能会遇到一些问题,比如你提到的无法执行Java程序的问题。这可能是因为在执行Java程序之前,需要先引入Java环境变量。你可以在脚本添加引入环境变量的命令,例如: ``` #!/bin/bash export JAVA_HOME=/path/to/java/home export PATH=$JAVA_HOME/bin:$PATH java -jar /path/to/your/java/program.jar ``` 其,`/path/to/java/home`是你的Java安装路径,`/path/to/your/java/program.jar`是你要执行Java程序的路径。这样,当crontab执行该脚本时,就会先引入Java环境变量,然后执行Java程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值