java 解决JDK内置工具不能使用问题
问题
在服务器上准备排查服务进程问题,想使用jstat
和jcmd
这些工具,然后发现给我报了个错:
bash: jstat: command not found
这是什么鬼,程序正常跑着,难道JDK还有阉割版?
看看版本,这个很正常。
1 | java version "1.8.0_291" |
那去看看bin下面是不是把这些工具全删了:
1 | echo $JAVA_HOME |
结果没有 JAVA_HOME 路径,这难道又是从/usr/bin
指过去的,怎么总是喜欢这么玩。
1 | which java |
结果,还真的是
/bin/java
那再看看这个java是指向哪里的:
执行命令
1 | ll /bin/java |
显示路径是:
/bin/java -> /etc/alternatives/java
那么也就是指向了 /etc/alternatives/
,进去看一眼:
执行命令
1 | 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
进去看一眼:
1 | 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
总结
机器一多,各种安装方式容易导致混乱如果可以,还是让运维同学统一安装基础应用,做到基础应用统一,使用时才会方便。