feat(zram): 添加 zram 自动配置功能及 root 运行检查

This commit is contained in:
严浩
2026-03-23 10:21:35 +08:00
parent b78d7a3782
commit 7541c815c2
2 changed files with 108 additions and 0 deletions
+74
View File
@@ -13,6 +13,11 @@ print_red() { echo -e "\033[31m\033[01m$1$2\033[0m"; }
print_green() { echo -e "\033[32m\033[01m$1$2\033[0m"; }
print_yellow() { echo -e "\033[33m\033[01m$1$2\033[0m"; }
if [ "$EUID" -ne 0 ]; then
print_red "请使用 sudo 运行此脚本"
exit 1
fi
# 设置 bash 为默认 shell
print_green "###################"
print_green "##### shell ######"
@@ -253,10 +258,79 @@ start_watchtower() {
containrrr/watchtower "${WATCHTOWER_ARGS[@]}" $WATCHTOWER_NAME
}
install_zram() {
print_green "###################"
print_green "###### zram #######"
print_green "###################"
if [ "$SYSTEM_TYPE" != "debian" ]; then
print_yellow "当前仅在 Debian 系统上配置 zram-tools,已跳过"
return 0
fi
if [ -f /.dockerenv ] || grep -qaE '(docker|containerd|kubepods|lxc)' /proc/1/cgroup 2>/dev/null; then
print_yellow "检测到容器环境,跳过 zram 配置"
return 0
fi
echo "正在准备 zram-tools..."
if dpkg -s zram-tools >/dev/null 2>&1; then
echo "zram-tools 已安装,跳过安装步骤"
else
apt update && apt install zram-tools -y
fi
if command -v modprobe >/dev/null 2>&1; then
if modprobe zram 2>/dev/null; then
echo "zram 内核模块已加载"
else
print_yellow "内核不支持 zram 模块,跳过 zram 配置"
return 0
fi
else
print_yellow "未找到 modprobe,继续尝试配置 zram-tools"
fi
local total_mem algo percent
total_mem=$(free -m | awk '/^Mem:/{print $2}')
echo "检测到总内存: ${total_mem}MB"
if [ "$total_mem" -le 2500 ]; then
percent="100"
if [ -r /sys/block/zram0/comp_algorithm ] && grep -qw zstd /sys/block/zram0/comp_algorithm; then
algo="zstd"
echo "策略:内存 <= 2G,使用 zstd 算法 (100% 占比)"
else
algo="lz4"
echo "策略:内存 <= 2G,但内核未报告 zstd 支持,回退到 lz4 (100% 占比)"
fi
else
algo="lz4"
percent="60"
echo "策略:内存 > 2G,使用 lz4 算法 (60% 占比)"
fi
cat <<EOF >/etc/default/zramswap
# 自动生成的 zram 配置
ALGO=$algo
PERCENT=$percent
PRIORITY=100
EOF
systemctl restart zramswap
echo "---------------------------------------"
echo "zram 部署完成!当前状态:"
zramctl || true
echo "---------------------------------------"
}
modify_authorized_keys
bash_aliases
install_docker
start_watchtower
install_zram
sysctl_config
# source <(curl -fsSL scripts.oo1.dev/nezha-v1.sh)