虚拟机里面编译mysql connector会导致整个虚拟机卡住

原因:编译某些子模块的时候,make 指定的参数是 -j,这就会将所有cpu都用来编译,导致虚拟机卡死。

解决办法:

mv /usr/bin/make /usr/bin/make.true

然后vi /usr/bin/make,加上这段脚本,相当于伪造了一个make,然后将-j0 或者 -j 参数改成 -j6

#!/bin/bash

# 创建一个新的参数数组
new_args=()

# 遍历所有传递给脚本的参数
for arg in "$@"; do
    # 如果参数是 -j0,则替换为 -j6
    if [[ "$arg" == "-j0" || "$arg" == "-j" ]]; then
        new_args+=("-j6")
    else
        new_args+=("$arg")
    fi
done

# 调用 make.true 命令,并传递修改后的参数
/usr/bin/make.true "${new_args[@]}"

加上可执行权限:chmod +x /usr/bin/make

就可以了

----

保险起见,可以将 nproc 也用类似的做法,伪造一个nproc, 输出一个小于真正核心数的数字

#! /bin/bash
echo 8

chmod +x /usr/bin/nproc

 

posted @ 2025-03-13 17:26  小明583  阅读(58)  评论(0)    收藏  举报