问题描述:
现场环境下的镜像包无法确定部分源码,需要通过arthas监控查询代码。arthas需要基于jps寻找java进程,但是该镜像中的jdk为openjdk没有jps命令。复制hotspot jdk到镜像中执行java -jar arthas-boot.jar
报错:
./bin/java: not found
以为是权限的问题,chmod 777 java之后还是not found。
在服务器内执行
ldd java 查看java所需的动态链库
[root@bin]# ldd java
linux-vdso.so.1 => (0x00007ffe9e580000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fba508cb000)
libjli.so => /home/alpine-jdk/jdk1.8.0_301/bin/./../lib/amd64/jli/libjli.so (0x00007fba506b3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fba504af000)
libc.so.6 => /lib64/libc.so.6 (0x00007fba500e1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fba50ce9000)
在alpine镜像内ldd java
由于alpine镜像使用的是musl libc而不是gnu libc,导致java所需要的动态链库无法链上
解决方案:<