/lib64/libc.so.6 错误导致的系统崩溃
缘由
我们有个同事要安装一个软件,就用yum 安装,然后就悲剧。安装完成之后 发现无论执行任何命令都会报错,如下错误
1 | psgrep: relocation error: : /usr/lib64/libpthread .so.0: relocation error: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference /usr/lib64/libpthread .so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference |
吓尿了,遇到这种错误就懵逼了,以为系统坏了,这个坏了可不是重做系统就好了(这个服务器是在异地,真要出问题 都要飞过去了)。
此时最最重要一点是不要关闭当前窗口,不要重新启动机器! 一旦关闭窗口将无法重新连接(可以自己新建窗口试下),重启机器后也将无法进入系统 。比较幸运的是 我们当时开了两个窗口,要不然就麻烦了
原因
libc.so.6是C运行时库 glibc的软链接,程序启动和运行时,是根据libc.so.6软链接找到glibc库
lib64/libc.so.6是一个软链接,指向/lib64/libc.so-2.1x,2.1x表示其对应版本,去兼容相应CentOS版本
很多基本命命令依赖glibc,libc.so.6链接对应版本不一致将导致系统的几乎所有程序不能工作
解决过程
由于我们也是第一次遇到,没撒经验 那就搜索了,根据相关文章思路 以及通过少的可怜可以执行的命令试错 大致知道了原因:应该是有人升级了内核,但是升级失败了,导致服务器存在两个内核,在执行yum的过程中应该把错误的内核指向了 /lib64/libc.so.6 。我们通过 命令发现 /lib64/libc.so-2..xx.so 有两个版本(tab 命令补全还可以使用),我们参考了其他机器发现都使用2.17 版本 。
但是我们在 执行 “sln /usr/lib64/libc-2.17.so /usr/lib64/libc.so.6” 过程中 发现 一直提示 一个很奇怪的错误,最后我们发现 其实 /lib64/libc-2.17.so 文件其实也是有问题的,幸好我们查找整个服务器备份了一个 2.17 的 so 文件(喜极而泣),然后把 这个 so 替换了 /lib64/libc-2.17.so 。发现软链之后就解决了一些问题。
解决方法
主要指向如下命令,就可以解决。
1 2 | sln /usr/lib64/ld-2 .17.so /usr/lib64/ld-linux-x86-64 .so.2 sln /usr/lib64/libc-2 .17.so /usr/lib64/libc .so.6 |
原文地址:/lib64/libc.so.6 错误导致的系统崩溃
标签:centos yum
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2016-10-11 PSR : php编码规范
2016-10-11 Composer : php依赖管理工具
2016-10-11 phpexcel 内存溢出 优化