glibc

如何优雅的搞垮服务器,再优雅的救活

孤者浪人 提交于 2020-10-17 15:22:27
故事事故是这样的 新开发的jar包部署在老服务器上,版本是Red Hat Enterprise Linux AS release 4 (Nahant Update 5),提示需要高版本jdk,高版本jdk提示glibc版本太低得升级,是的,就像套娃。 使用编译源码的方式将glibc由2.3升级到2.9,升级完ls命令不好使了。 用LD_PRELOAD方法解决了ls命令不好使的问题后还挺有成就感的呢! 轻度强迫症的我当然要重启,然后 #reboot 就没有然后了。。 操作系统起不来了。各种尝试,最好的结果是卡死在 Starting cups-config-daemon: Starting HAL daemon: 再也不往下走了。007的服务器被996的程序员干进了ICU。 看到了吧,搞垮服务器可以显得很无辜。删库显得太刻意了,会被人指责性格有问题。 抢救思路 像《信条》一样进行一次逆过程,把glibc相关的静态库、动态库都用原来的低版本覆盖回来。cp覆盖和安装rpm覆盖一起上。 必要条件 能进机房,直接操作服务器,因为ssh此时已经连不上了。 有相同版本的Linux系统光盘,Linux抢救模式需要光盘引导。 有相同版本的Linux系统的iso镜像文件,用来获取rpm 【或者替代方法】 有相同版本的Linux系统的服务器或者虚拟机,用来下载.a文件 【或者替代方法】 准备工作

0、MySql第零章,安装及集群配置

孤人 提交于 2020-10-15 07:17:08
MySql第零章,安装及集群配置 一、MySql安装 1、RPM安装 RPM安装,无法自定义一些安装路径和配置文件路径 ##以后再填坑 2、Generic安装 二进制 预编译 Generic,下载地址: https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz [root@mysq|1 ~ ]# groupadd mysql [root@mysql1 ~ ]# useradd -r -g mysql -s /bin/false mysql [root@mysql1 ~ ]# cd /usr/local [root@mysq|1 local]# tar -zxvf /opt/software/file/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz [root@mysq|1 local]# ln -s mysql-5.7.29-linux-glibc2.12-x86_64 mysql #超链接 1、mysql初始化 没有编译安装的过程 [root@mysq|1 local]# cd mysql [root@mysql1 mysq|]# mkdir mysql-files [root@mysql1 mysq|]# chmod 750

Alpine Linux 使用简介

耗尽温柔 提交于 2020-10-07 05:18:59
一、Alpine简要介绍 Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。 Alpine Linux 网站首页注明“Small!Simple!Secure!Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.”概括了以下特点: 1、 小巧: 基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB; 2、 安全 :面向安全的轻量发行版; 3、 简单 :提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。 4、适合 容器使用 :由于小巧、功能完备,非常适合作为容器的基础镜像。 <!--more--> 二、Alpine更新国内源 # Alpine的源文件为: /etc/apk/repositories, # 默认的源地址为: http://dl-cdn.alpinelinux.org/ 可以编辑源文件 /etc/apk/repositories, 采用国内阿里云的源,文件内容为: https://mirrors.aliyun.com/alpine/v3.9/main/ https

二进制安装安装mysql 8.0.20

坚强是说给别人听的谎言 提交于 2020-10-07 00:48:58
MySQL最新版本8.0.20正式发布。与之前8.0的系列版本一样,这次的发行版除了包含缺陷修复,也同样包括新功能。下面快速浏览一下。关键字:hash join、InnoDB双写缓冲、二进制日志事务压缩。 下载mysql8.0.20二进制安装包 环境:centos7 打开mysql官方下载链接 https://dev.mysql.com/downloads/mysql/ 然后选择操作系统为linux通用、结构是X86,64二进制安装包 将二进制安装包上传至Linux服务器 #下载相关依。 [15:12:04 root@a7 ~]#yum -y install make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio wget lrzsz vim libnuma* bzip2 xz #关闭selinux [15:35:17 root@a7 ~]#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config [15:35:51 root@a7 ~]#setenforce 0 setenforce: SELinux is disabled #创建mysql用户并创建分组 [16:12:37 root@a7

Centos 7 安装 Oracle 12cR2 流程

孤街浪徒 提交于 2020-10-06 06:47:39
Centos 7 安装 Oracle 12cR2 流程 一个欠登儿程序员 2019-01-28 16:40:30 788 收藏 2 分类专栏: Centos 7 软件安装系列 版权 前言 在公司之前一直用的是Oracle 11g的数据库版本,由于一次漏扫,扫描Windows服务器出现“Oracle Enterprise Manager Grid Control JSP代码执行漏洞(CVE-2010-3600)”,想了很多办法进行补漏洞,但是漏扫仍旧不能通过,之后直接进行Oracle大版本升级解决了此漏洞,之后公司一直采用Oracle 12c,包括Linux平台的服务器。 此流程只包含Linux平台的Oracle 12c的安装(Windows平台Oracle 12c安装流程),本流程采用静默安装的形式,安装包请自行到官网下载 下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 此流程借鉴了 https://blog.csdn.net/haopeng7816/article/details/83956623 该博客内容,该博客更加清楚的写明了从虚拟机安装到Oracle 12c安装的全过程,如需查看虚拟机安装过程,请移步。 安装前检查 检查依赖包 rpm -q

Linux程序移植到Android上

别来无恙 提交于 2020-10-03 13:19:27
序言: 由于本人还是比较偏重于先说明原理在说明实际操作步骤,要知其然更要知其所以然,如下图所示: 传统的linux系统中的程序基本都依赖于glibc(至于什么是glibc可以百度去),而右边AOSP( Android Open-Source Project)的程序基本都是依赖于Bionic(由谷歌公司开发类库,用来替代glibc)。这就决定了要想移植linux上的程序到android上就必须解决这个依赖的类库不同的问题。 一般情况下,有两种方法。 一个就是将程序静态编译,将程序中所有需要的库全部编译进可执行文件中。这样程序在android中运行就不需要链接任何动态库了。但是带来一个非常大的弊端就是这个程序会非常大,资源利用会非常低下。一个简单的helloWorld!都可以达到好几百k! 另一个就是用ld-llinux.so.3来替代android系统中/system/bin/linker来作为链接器进行动态链接,当然这就需要将相应的动态库也拷贝到android中(个人理解,如果表述不够准确请指正)。这样就可以进行动态链接,并且正常运行了。 静态编译方法: 首先我们以移植一个helloworld程序作为例子。 #include<stdio.h> void main() { printf("HelloWorld!\n"); } 输入命令进行静态编译:arm-none-linux

ROP(Return Oriented Programming)原理解析

左心房为你撑大大i 提交于 2020-09-28 09:37:25
先看一个代码: # include <stdio.h> # include <stdlib.h> // 下面的dummy_libc_part1和dummy_libc_part2假设是GLIBC库里的任意两段函数 void dummy_libc_part1 ( ) { // ... 这里可能会有别的指令 __asm ( "mov 0(%rsp), %rdi" ) ; __asm ( "popq %r13" ) ; __asm ( "call *%r14" ) ; __asm ( "ret" ) ; // ... 这里可能会有别的指令 } void dummy_libc_part2 ( ) { // ... 这里可能会有别的指令 __asm ( "popq %r14" ) ; __asm ( "ret" ) ; // ... 这里可能会有别的指令 } int main ( int argc , char * * argv ) { __asm ( "pushq $0x400545" ) ; __asm ( "pushq $0x62" ) ; __asm ( "pushq $0x400521" ) ; __asm ( "pushq $0x400400" ) ; __asm ( "pushq $0x40052f" ) ; __asm ( "ret" ) ; printf ( "." ) ;

他是阿里P11,靠写代码写成合伙人,身家几十亿,没有他,我们可能刷不了淘宝!...

时光毁灭记忆、已成空白 提交于 2020-09-26 17:33:08
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨Mr.K 编辑| Emma 来源丨技术领导力(ID:jishulingdaoli) 转载请联系授权(微信ID:tojerry123) 他是阿里的“扫地僧”,写代码级别最高的人,一等一的技术高手,他非科班出身,用近20年的时间,修炼成为受万人敬仰的技术大神。 他就是,蔡景现,花名“多隆”,一个神一样的程序员。 01 多隆技术有多牛? 阿里研究员毕玄说,“在阿里,牛逼的人很多,但能被称为‘神’的只有多隆一个。他在解决故障方面的能力更是无人能及,在淘宝的故障解决历史上有 N 多的案例。” 阿里行颠(CTO张建锋)曾这样评价多隆,“多隆做事一个人能顶一个团队,比如说写一个文件系统,别人很可能是一个项目组,甚至一个公司在做,而他从头到尾都是一个人,在很短的时间内就完成了。” 阿里中间件研究员小邪,随手举了两个例子,“五彩石项目,多隆完成了商城搜索的 dump 逻辑,当时如果没有多隆,整个项目需要延后 2 周。” “还有一次,淘宝 session 框架调用 session_tair 故障,10几个人一起排查问题,从 6:00 排查到第二天的 6:00,最后是多隆查到了问题。” 多隆如果遇到一个程序上的问题,在没有固定的正确答案的情况下

升级glic: 解决"libc.so.6: version &apos;GLIBC_2.14&apos; not found"问题

喜夏-厌秋 提交于 2020-09-23 19:22:22
升级glic: 解决"libc.so.6: version 'GLIBC_2.14' not found"问题 参考文章: (1)升级glic: 解决"libc.so.6: version 'GLIBC_2.14' not found"问题 (2)https://www.cnblogs.com/kevingrace/p/8744417.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/stackoom/blog/4539769