欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于linux下报错 jps :command not found 解决

程序员文章站 2022-04-18 14:37:22
...

背景:

在linux中将脚本注册为服务让其开机自动启动,该脚本依赖jdk环境,而在/etc/profile中也配置了jdk环境,并且/etc/profile文件会在开机时自动执行,所以其中的jdk环境在开机时会自动加载,这一切看起来都没有问题。然后,我在开机后检测服务是否启动时显示:

jps :command not found

我在脚本中确实使用了jps命令,按理说只要正常配置了jdk环境,那么就可以使用jps命令。这里插个题外话:

jps解释:

JavaVirtualMachineProcessStatusTool,即java提供的一个命令,可以查看java进程以及进程pid等信息。具体用法可以参考:

https://www.jianshu.com/p/d39b2e208e72

这篇文章我觉得写的很不错。接下来回到正题:

那么为什么我在正确配置了jdk环境的情况下还是无法在脚本中使用jps命令呢

原因是:当用脚本去注册一些服务然后让其开机能够自动启动时,有的脚本依赖jdk环境,或者使用了一些java命令,这时候在linux开机时,开机自启服务就会去寻找用来注册服务的脚本中自身有没有配置jdk环境,如果没有那么就会报错,导致注册的服务无法开机自启。

解决:

在注册服务的脚本中加入jdk环境

export JAVA_HOME=/usr/local/java/jdk1.8.0_231
export PATH=$PATH:${JAVA_HOME}/bin

如果脚本还需要jre或者Java中的jar包等,则同时将相应路径配置在脚本中就好了。其实也就是将/etc/profile中的jdk配置复制一份放到脚本中就可以了。
 

export JAVA_HOME=/usr/local/java/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

 

还有一个问题就是在/etc/profile中配置的jdk环境应该是全局的,但是为什么用来注册服务的脚本在linux开机时无法读取加载这个全局的jdk环境呢?为什么脚本需要的jdk环境只能配置在脚本内部呢?如果说开机时脚本没来得及去加载读取这个全局的jdk环境,我试了下开机后执行脚本依旧无法读取到这个全局的jdk环境。即使  ln -s /usr/local/java/jdk1.8.0_231/bin/java  /usr/bin/java也不行。这个问题依旧无法得到答案。

 

相关标签: java项目