LINUX Centos7.3误将/usr/lib64/libc-2.17.so改为libc-2.17.so.bk

背景

在终端操作时,误用mv命令将/usr/lib64/libc-2.17.so改为libc-2.17.so.bk,导致终端其他命令均不可用,提示error while loading shared liararies: libc.so.6:canot open shared object file: No such file or directory . 在网上搜索有到有libc.so.6被误删的相关答案,但都是需要插入光盘什么的,但我的机器不能插外部移动储备。所以自己捣鼓了一下。

解决步骤

之前其他人用我封装的库时,缺少系统库,所以我将lib64系统库拷贝过一份留在windows中,不幸中的万幸。
查看winscp仍然可用,尝试直接将libc-2.17.so拷贝到lib64目录失败。将之前外部存在的lib64文件夹名称改为lib64.bk复制到/usr目录下成功。
终端仍然可以打开,但是已无法进入到root权限下,幸好之前打开的终端没有关闭。所以如果遇到类似的问题,已经打开的终端不是必要就不要轻易关闭,说不定就用上了。
在root权限的终端中输入:

export LD_LIBRARY_PATH=/usr/lib64.bk
export LD_PRELOAD=/usr/lib64.bk

然后输入

/usr/lib64.bk/ld-2.17.so /usr/bin/mv /usr/lib64/libc-2.17.so.bk /usr/lib64/libc-2.17.so

会报错:
bash:/usr/lib64.bk/ld-2.17.so: 权限不够
输入:

chmod 777 /usr/lib63.bk/ld-2.17.so

然后重新输入:

/usr/lib64.bk/ld-2.17.so /usr/bin/mv /usr/lib64/libc-2.17.so.bk /usr/lib64/libc-2.17.so

会提示:
ERROR: ld.so: object ‘/usr/lib64.bk’ from LD_PRELOAD cannot be preloaded: ignored.
这个错对命令执行不影响,查看/usr/lib64目录下libc-2.17.so.bk已改为libc-2.17.so.
在新终端中再次尝试,系统已经恢复正常,命令可以正常使用。

猜你喜欢

转载自blog.csdn.net/DustDawn/article/details/112746972
今日推荐