问题解决:Centos误将/lib64更改为lib64.bak

问题解决:Centos误将/lib64更改为lib64.bak
CentOS系统中,lib目录下的库对系统的正常运行起着非常关键的作用。一旦误操作将导致系统瘫痪。

/lib64被重命名
故障表现
由于操作失误,把/usr/lib64重命名成了/usr/lib64.bak,结果发现,在运行所有外置命令的时候报错:

mv命令无法使用

-bash: /bin/mv: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

cp命令无法使用

-bash: /bin/cp: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

ls命令无法使用

-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

ssh命令无法使用

-bash: /usr/bin/ssh: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
想使用mv把文件重命名回来已经不行了,就连重新ssh远程都远程不了。

修复方法
方法一
光盘修复,安装glibc,如果机器允许重启的话

方法二
系统一般情况下会设置LD_LIBRARY_PATH, LD_PRELOAD这两个环境变量,来改变应用程序所调用库文件的路径。这两个环境变量只对应用程序有效,可能会对shell命令不起作用

因为默认的库文件路径/usr/lib64被改成了/usr/lib64.bak,因此尝试:

export LD_LIBRARY_PATH=/usr/lib64.bak
export LD_PRELOAD=/usr/lib64.bak
cp /usr/lib64.bak /usr/lib64
方法三
在一个正常的操作系统上<我们可以发现/lib64/ld-linux-x86-64.so.2只是个软链,真实文件是/usr/lib64/ld-2.17.so,而且这个文件本身并不是库文件,可以简单的认为他是库文件的管理程序。

ld-linux-x86-64.so.2是操作系统的核心,并不受LD_LIBRARY_PATH环境变量的影响。如果想改变其调用方式,可以查看man文档

根据使用帮助,我们手动指定库路径进行调用cp命令
/lib64/ld-linux-x86-64.so.2 --library-path /lib64.bak /bin/cp /lib64.bak /lib64 -afr
删除/lib64/ld-linux-x86-64.so.2
解决方法同上,删除的是软连接文件,链接回来即可

/lib64/ld-2.17.so --library-path /lib64/ld-2.17.so /bin/ln -sv /lib64/ld-2.17.so /lib64/ld-linux-x86-64.so.2/lib64被误删这个是致命的故障,趁没有关闭ssh连接,赶紧使用内置命令while read把重要的配置文件输出到屏幕复制粘贴出来吧,然后尝试光盘修复

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部