参考命令: 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) 


wKioL1U4VX-w9J4MAARSfb7xO8g497.jpg

 少了 libgd.so.2 库文件 ,find / -name libgd.so.2   没有发现这个库文件

-------------------------------------------------------------------------------------------

另找一台nginx 查看库文件的软链接情况  ldd $(which /usr/local/nginx/sbin/nginx) 

wKiom1U4cOOi9UEfAAZnvea-CA0662.jpg

找到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 安装