系统环境: CentOS 64位+千万不要在生产环境中升级glibc!
# 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
作者:小和尚的藏经阁
链接:https://www.jianshu.com/p/216b28535c6b
来源:
升级glibc挂了后可以救命的命令
系统环境: centos 64位
首先,重要的事情说三遍,哈哈:
千万不要在生产环境中升级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_
参考资料:运维之路
上一篇: 数据持久化
下一篇: 我是如何自学python到找到工作