升级glibc挂了后可以救命的命令^o^

系统环境: CentOS 64位

首先,重要的事情说三遍,哈哈:
千万不要在生产环境中升级glibc!!!
千万不要在生产环境中升级glibc!!!
千万不要在生产环境中升级glibc!!!

但是如果实在不幸,在升级glibc时挂掉了,执行各种命令都提示错误,比如:
Segmentation fault
或者:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
这类错误出现千万不要着急退出SSH,执行下面的命令是可以挽救的:

# cd /lib64
# LD_PRELOAD=/lib64/libc-2.15.so ln -sf /lib64/libc-2.15.so libc.so.6

libc-2.15.so这个文件名根据你系统中的文件而定,如果有多个版本so文件可以逐个尝试

原理分析:
linux调用so的库文件时,搜索路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。设置LD_PRELOAD了后,库加载的顺序就变成这样了:
LD_PRELOAD —> 当前路径 —> 系统lib目录

最后赠送一个查看当前支持gblic版本的命令:
# strings /lib64/libc.so.6 | grep GLIBC

参考资料:运维之路

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容