遭遇“ error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory”问题
今天中午,在Redhat AS5 上解决一个数据库连接问题,在应用的日志中发现如下报错信息:
[error] [client 145.24.216.86] /lib/libc.so.6(__libc_start_main+0xdc)[0x4138cdec],
在系统中搜索了一下,发现三个位置有libc.so.6:
/home/ora10g/product/10.2.0/db_1/lib/stubs/libc.so.6
/lib/i686/nosegneg/libc.so.6
/lib/libc.so.6
看到Oracle也带有libc.so.6, 于是怀疑会不会是Oracle 10g与系统自己的libc.so.6版本不兼容而导致错误呢?
一时兴起,想出一个方案:
1、把系统自己的libc.so.6改名为: libc.so.6.bak
2、通过
ln -s /home/ora10g/product/10.2.0/db_1/lib/stubs/libc.so.6 /lib/libc.so.6
用Oracle的libc.so.6来代替系统自带的libc.so.6
我为自己想出这么高明的办法暗自高兴一下,说干就干,动手。
第一步,先把/lib/libc.so.6改名为libc.so.6.bak。
执行:
[root@145 lib]# cd /lib
[root@145 lib]# mv libc.so.6 libc.so.6.bak
第二步,把Oracle的动态库连接到/lib/libc.so.6
执行:
[root@145 lib]# ln -s /home/ora10g/product/10.2.0/db_1/lib/stubs/libc.so.6 libc.so.6
一回车,系统提示:
ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
我也没太在意这个错,以为仅是意外的出错而已,于是重新执行一下命令,没想到还是报同样的错!有点傻眼了……
我想既然不成功,那还是恢复原来状态吧,只要把改过的文件重新改回原来的名字即可。
再次执行:
[root@145 lib]# mv libc.so.6.bak libc.so.6
系统还是报错:
mv: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
这下可真傻眼!!汗!!!
于是开始一个个尝试命令: cp、 mv、rm 等等,发现都报这个错,我这才明白闯大祸了,把服务器整死了。
经过不断尝试,发现多数的shell命令已经不能执行了,最主要的是可以恢复原文件的cp、mv、ln命令全都失效了。发现只有象pwd、cd 等小部分命令还可以使用,而这些命令于事无补。
用SecureCRT尝试ssh登录这个服务器,已经无法连接到服务器,而原来连接在上面的两个进程却没被中断,服务器只是拒绝新连接而已。
看来只有到机房里,用安装盘进入急救模式,再把那个文件名改回来,才可能就能把机器救活了。
以前安装的光盘已经失踪了,但还好在一台机器上找到了同版本的一个ISO文件,于是赶紧刻盘,然后去机房。
到了机房,把光盘放入光驱,重启机器,进启动到 LILO: 界面时,输入
linux rescue
然后根据提示进入到急救模式,进入/lib目录下一看,libc.so.6文件还在啊,怎么回事?再想起在启动过程中,有句提示说原系统的目录mount在/mnt/sysimage目录下,于是进入到/mnt/sysimage,看到了与原服务器一致目录结构在那儿静静地躺着。再进入 /mnt/sysimage/lib,看到了lib.so.6.bak,看来刚才操作的时候,文件改名是成功了。现在当务之急是把文件名改回来。执行:
mv libc.so.6.bak libc.so.6
再次确认文件已改名成功,关掉机器,退出光盘,再重启机器,系统一路欢歌,进到登录界面。终于大功告成了。
事后再总结一下这次事故的出错原因:
libc.so.6是bash这个shell依赖的重要动态库之一,当我把这个动态库(链接)改名之后,shell找不到这个库了,所以就报找不到libc.so.6,并拒绝执行多数shell指令,也中断了ssh连接请求,而在整个过程,操作系统的kernel却还是活的,所以我原先连接的两个ssh进程还有反应(对回车、pwd等小数指令有响应),但却不能新建ssh连接。
这次事故也给我一个教训:
不要随便改Linux/Unix的系统动态库!
更不要在生产机上随便改!!
最不应该是还是在白天改!!!
分享到:
相关推荐
MYSQL之 error while loading shared libraries: libtinfo.so.5: cannot open shared objectfile: No such f-附件资源
deepstream-app: error while loading shared libraries: libnvinfer.so.7: cannot open shared object file: No such file or directory
libonig.so.2 的依赖文件 bin/php: error while loading shared libraries: libonig.so.2: cannot open shared object file: No such libonig.so.2.0.0 放到/usr/lib64 下 ln -s libonig.so.2.0.0 libonig.so....
linux运行zipalign报错“error while loading shared libraries: libc++.so“ 相关文章链接https://blog.csdn.net/u010775335/article/details/124869330
mysql linux下安装时,存在以下错误: Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
bedGraphToBigWig: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory 就将使用root用户,将这两个文件放到/usr/lib64/ 或则使用: ln -s /usr/...
在Linux系统中,有时在运行某些程序时可能会遇到“error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory”这样的错误提示,这意味着系统缺少名为libssl...
你是否还在为报错sqlplus: error while loading shared libraries: libclntsh.so.11.1: cannot open shared object file: No such file or directory而犯愁,不用犯愁了,赶紧下载吧!
tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory 原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库...
mongodb-linux-x86_64-ubuntu2004-4.4.23.tgz适用于ubuntu24 64位系统,启动mongodb的时候若提示./mongod: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file,可将系统中的...
libXp.so.6: cannot open shared object file: No such file or directory [oracle@dbadb1 ~]$ ls -ld /usr/lib/libXp.so.6 ls: /usr/lib/libXp.so.6: No such file or directory [root@dbadb1 zhuxu]# rpm -ivh...
error while loading shared libraries: libstdc++.so.6
"Error Loading OS" 是一种常见的计算机启动错误,通常在尝试加载操作系统时出现。该问题可能由多种原因引起,包括但不限于BIOS设置问题、硬盘错误、主引导记录损坏或未激活的主分区。针对这个错误,我们可以尝试...
./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory 那就表示系统不知道xxx.so 放在哪个目录下。 这个时候就要在/etc/ld.so.conf中加入xxx.so...
error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory 缺少的文件libfreetype.so.6