参考命令: ldd $(which /usr/local/nginx/sbin/nginx)
ldd $(which /usr/lib/jvm/jre-1.7.0/bin/java)
报错信息:
Nginx 报错信息:
service nginx restart
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libgd.so.2: cannot open shared object file: No such file or directory
nginx stop failed/usr/local/nginx/sbin/nginx: error while loading shared libraries: libgd.so.2: cannot open shared object file: No such file or directory
Tomcat 报错信息:
/tomcat/bin/catalina.sh: line 394: /usr/lib/jvm/jre-1.7.0/bin/java: No such file or directory
库文件丢失缺少原因,自己总结的有三种原因
1.编译安装的不完全 或是 缺少安装包
2.误删除操作系统上的某些rpm包
3.系统未知的错误原因导致库文件丢失或是软链接失效
判定为什么可能是库文件丢失引起的报错?
报错信息中有提示 lib 关键字就应该立刻想到 有可能是库文件的原因
nginx排错过程
在错误主机上用命令显示: ldd $(which /usr/local/nginx/sbin/nginx)
少了 libgd.so.2 库文件 ,find / -name libgd.so.2 没有发现这个库文件
-------------------------------------------------------------------------------------------
另找一台nginx 查看库文件的软链接情况 ldd $(which /usr/local/nginx/sbin/nginx)
找到libgd.so.2 => /usr/lib64/libgd.so.2 (0x00007f4383cae000)
然后查看软链接指向的库文件
ls -al /usr/lib64/libgd.so.2
lrwxrwxrwx 1 root root 14 May 5 2014 /usr/lib64/libgd.so.2 -> libgd.so.2.0.0
再用find查看库文件位置
find / -name libgd.so.2.0.0
/usr/lib64/libgd.so.2.0.0
至此看以看出:问题主机的库文件丢失了并且软链接也丢失,库文件和软链接处于同一个目录
解决方法: 从另外一台主机中将库文件scp过来并设置软链接
scp /usr/lib64/libgd.so.2.0.0 root@IP:/usr/lib64/
进入问题主机 做软链接 cd /usr/lib64/
ln -s /usr/lib64/libgd.so.2.0.0 /usr/lib64/libgd.so.2
最终问题解决。
-------------------------------------------------------------------------------------------
tomcat排错过程
find / -name libjli.so
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.55.x86_64/jre/lib/amd64/jli/libjli.so
rpm -aq |grep ava-1.7.0-openjdk
java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el6_5.x86_64
发现 没有这个目录:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.55.x86_64/ 是由于 少了一个rpm包 yum 安装
转载于:https://blog.51cto.com/asaderas/1637528