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

CentOS系统中,lib目录下的库对系统的正常运行起着很是关键的做用。一旦误操做将致使系统瘫痪。linux

/lib64被重命名
故障表现
因为操做失误,把/usr/lib64重命名成了/usr/lib64.bak,结果发现,在运行全部外置命令的时候报错:shell

mv命令没法使用

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

cp命令没法使用

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

ls命令没法使用

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

ssh命令没法使用

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

修复方法
方法一
光盘修复,安装glibc,若是机器容许重启的话blog

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

由于默认的库文件路径/usr/lib64被改为了/usr/lib64.bak,所以尝试:it

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,并且这个文件自己并非库文件,能够简单的认为他是库文件的管理程序。class

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把重要的配置文件输出到屏幕复制粘贴出来吧,而后尝试光盘修复

转载于:https://blog.51cto.com/13401435/2314132