问题
在服务器上准备排查服务进程问题,想使用jstat
和jcmd
这些工具,然后发现给我报了个错:
bash: jstat: command not found
这是什么鬼,程序正常跑着,难道JDK还有阉割版? 看看版本,这个很正常。
代码语言:javascript复制java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
那去看看bin下面是不是把这些工具全删了:
代码语言:javascript复制echo $JAVA_HOME
结果没有 JAVA_HOME 路径,这难道又是从/usr/bin
指过去的,怎么总是喜欢这么玩。
which java
结果,还真的是
/bin/java
那再看看这个java是指向哪里的: 执行命令
代码语言:javascript复制ll /bin/java
显示路径是:
/bin/java -> /etc/alternatives/java
那么也就是指向了 /etc/alternatives/
,进去看一眼:
执行命令
代码语言:javascript复制cd /etc/alternatives/
结果,指向的是/usr/java/jdk1.8.0_291-amd64/bin/java
,好吧,应该是最后一层了。
java -> /usr/java/jdk1.8.0_291-amd64/bin/java ld -> /usr/bin/ld.bfd libnssckbi.so.x86_64 -> /usr/lib64/pkcs11/p11-kit-trust.so
进去看一眼:
代码语言:javascript复制cd /usr/java/jdk1.8.0_291-amd64/bin/
命令基本都在这里,这里也是java的目录
appletviewer ControlPanel -> jcontrol extcheck idlj jar jarsigner java javac javadoc javafxpackager javah javap javapackager java-rmi.cgi javaws jcmd jconsole jcontrol jdb jdeps jhat jinfo jjs jmap jps jrunscript jsadebugd jstack jstat jstatd jvisualvm keytool native2ascii orbd
总结
机器一多,各种安装方式容易导致混乱如果可以,还是让运维同学统一安装基础应用,做到基础应用统一,使用时才会方便。