问题解决:Centos误将/lib64更改为lib64.bak
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题解决: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把重要的配置文件输出到屏幕复制粘贴出来吧,然后尝试光盘修复
以上是关于问题解决:Centos误将/lib64更改为lib64.bak的主要内容,如果未能解决你的问题,请参考以下文章
centos7下安装nmon后,无法运行,提示 cannot execute binary file或/lib64/ld64.so.1不存在
Ubuntu / CentOS 缺少libpng12.so.0问题lib
Centos下Apache遇到/usr/lib64/libnsssysinit.so: undefined symbol: PR_GetEnvSecure错误
/apex/com.android.runtime/lib64/bionic/libc.so (abort+160),在 Android 10 设备中中止崩溃
Linux/Centos下/lib64/libc.so.6: version `GLIBC_2.14' not found问题