【A】RHEL 6 中误删 libc.so.6 文件后恢复
【Q】:RHEL 6 中 误删 /lib64/libc.so.6 库文件后
libc.so.6 简介
libc.so.6 是Linux系统(RHEL/CentOS)发行版系统中位于/lib64/
目录下的GNU C (GLIBC-x.xx)标准库文件链接文件。一般是链接到同目录下的 libc-2.xx.so
文件,具体版本号取决于系统版本情况。
可以使用如下命令查看 libc-x.xx.so文件中包含的GLIBC主库版本
strings /lib64/libc-2.12.so |grep -Eo “^GLIBC_.*”
删除libc.so.6后现象
删除此文件后,最直观的现象是:基本系统中绝大部分命令都无法正常使用(这应该是因为Linux系统是C开发的),执行常用的ls、pwd、cd
等命令都会报错:
ls:error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
如何恢复
恢复此文件有三种方式:
方法1: 如果误删操作后,当前的shell还在登录状态,则直接执行:
# sln /lib64/libc-2.12.so /lib64/libc.so.6
说明:
- /lib64/libc-2.12.so 文件是误删 libc.so.6 前已存在于/lib64 目录下的;
- 如删libc.so.6之前,不知道/lib64/下的libc-x.xx.so 文件具体版本,我个人有两个办法:
a. 找个同系统版本的另一台服务器,查一下;
b. 从libc-2.12.so 开始尝试,如果不存在,就尝试libc-2.13.so …sln
此命令是 创建一个源文件的静态符号链接目标文件。
方法2: 如果误删除操作后,当前的shell还在登录状态,也可以使用如下方式:
# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
说明:
同方法1说明。
方法2: 如果已经丢失了当前的shell登录,重启进入救援模式:
- 挂载系统镜像文件,重启服务器;
- 进入救援模式(rescue)
- 进入终端后,系统会提示
原系统的目录被mount到/mnt/sysimage下
,于是进入/mnt/sysimage,此时就可以使用ln -s命令创建软链接了 - 然后重启系统,正常进入系统即可。
或者
可以尝试进入单用户模式试试(此方式本人未试验),但个人感觉可行。
@end