首先普及一下关于libc.so.6的基本常识:
libc.so.6是glibc的软链接
ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 11 Aug 27 2014 /lib64/libc.so.6 -> libc-2.5.so
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所以说绝大部分操作命令都缺少不了它
[11:10:36 root@centos7 ~ ]#ldd `which /usr/bin/ls`
linux-vdso.so.1 => (0x00007fff625cb000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3aff0a7000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f3afeea2000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f3afec99000)
libc.so.6 => /lib64/libc.so.6 (0x00007f3afe8cb000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3afe669000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f3afe465000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3aff2ce000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f3afe260000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3afe044000)
[11:10:53 root@centos7 ~ ]#ldd `which /usr/bin/cp`
linux-vdso.so.1 => (0x00007fff7c727000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f0ff5ac8000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f0ff58bf000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f0ff56ba000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0ff52ec000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f0ff508a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f0ff4e86000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0ff5cef000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0ff4c6a000)
[11:11:01 root@centos7 ~ ]#ldd `which /usr/bin/rm`
linux-vdso.so.1 => (0x00007fff3a9bf000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2c14a45000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2c14e13000)
[11:11:12 root@centos7 ~ ]#ldd `which /usr/bin/mv`
linux-vdso.so.1 => (0x00007ffc2b9f8000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb6c1297000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007fb6c108e000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007fb6c0e89000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb6c0abb000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb6c0859000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb6c0655000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb6c14be000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb6c0439000)
[11:11:27 root@centos7 ~ ]#ldd `which /usr/bin/cat`
linux-vdso.so.1 => (0x00007ffeb41e5000)
libc.so.6 => /lib64/libc.so.6 (0x00007f07d9905000)
/lib64/ld-linux-x86-64.so.2 (0x00007f07d9cd3000)
误删除/lib64/libc.so.6文件怎么办呢?
环境一:shell还未断开,敲ldconfig重新加载本地的库文件
[root@centos8 tmp ]#mv /lib64/libc.so.6 /tmp
mv: overwrite '/tmp/libc.so.6'? y
[root@centos8 tmp ]#ls
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos8 tmp ]#mv
mv: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos8 tmp ]#cat
cat: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos8 tmp ]#ldconfig
[root@centos8 tmp ]#mv
mv: missing file operand
Try 'mv --help' for more information.
[root@centos8 tmp ]#/lib64/libc-2.28.so ln -s /li
[root@centos8 tmp ]#
[root@centos8 tmp ]#
[root@centos8 tmp ]#ll /lib64/libc.so.6
lrwxrwxrwx. 1 root root 12 Nov 26 10:30 /lib64/libc.so.6 -> libc-2.28.so
环境二:shel已断开,只能进去光盘抢救模式了
/lib64/libc.so.6其实是软连接文件
打开相同的操作系统,查看/lib64/libc.so.6是哪个文件的软链接
如:centos8
[root@centos8 tmp ]#ll /lib64/libc.so.6
lrwxrwxrwx. 1 root root 12 Nov 26 10:30 /lib64/libc.so.6 -> libc-2.28.so
centos7
[root@centos7 ~ ]#ll /lib64/libc.so.6
lrwxrwxrwx. 1 root root 12 Oct 10 09:23 /lib64/libc.so.6 -> libc-2.17.so
假设是centos7的操作系统恢复
chroot命令已无法使用
进入系统挂载的临时文件夹/mnt/sysimage下的lib64目录
bash4.4#cd /mnt/sysimage/lib64
bash4.4#pwd
/mnt/sysimage/lib64
bash4.4#ln -s libc-2.17.so libc.so.6
软链接创建后就能正常使用chroot命令了,可以chroot进入操作系统验证
重启后就恢复啦o(* ̄▽ ̄*)ブ