diff --git a/vps_init.sh b/vps_init.sh index 4085dc5..f9bdee9 100644 --- a/vps_init.sh +++ b/vps_init.sh @@ -13,6 +13,7 @@ NEW_SSH_PORT="4399" # SSH新端口号(默认值) TIMEZONE="Asia/Shanghai" # 时区设置 SWAP_SIZE=2048 # 交换分区大小(MB) +SWAPPINESS=10 # 交换倾向默认值(0-100,越大越倾向使用交换) # =========================================== # 颜色定义 @@ -126,6 +127,23 @@ else echo -e "${GREEN}保持主机名不变${NC}" fi +# 询问交换倾向(swappiness) +echo -e "${YELLOW}4. 设置交换倾向 swappiness (0-100)?${NC}" +echo -e "${YELLOW} 值越大越倾向使用交换(swap),越小越倾向保留物理内存${NC}" +while true; do + read -p "请输入 swappiness 值 (0-100, 默认${SWAPPINESS}): " INPUT_SWAPPINESS + # 用户直接回车则使用默认值 + INPUT_SWAPPINESS=${INPUT_SWAPPINESS:-$SWAPPINESS} + # 校验:必须为0-100之间的整数 + if [[ "$INPUT_SWAPPINESS" =~ ^[0-9]+$ ]] && [ "$INPUT_SWAPPINESS" -ge 0 ] && [ "$INPUT_SWAPPINESS" -le 100 ]; then + SWAPPINESS=$INPUT_SWAPPINESS + echo -e "${GREEN}swappiness 将设置为: ${SWAPPINESS}${NC}" + break + else + echo -e "${RED}无效的输入,请输入 0 到 100 之间的整数${NC}" + fi +done + echo -e "${BLUE}交互式设置完成${NC}" echo "" @@ -672,15 +690,17 @@ else log "${GREEN}已添加到fstab,开机将自动挂载${NC}" fi - # 调整swappiness参数(控制系统对交换空间的使用倾向) - echo "vm.swappiness=10" > /etc/sysctl.d/99-swappiness.conf - sysctl -p /etc/sysctl.d/99-swappiness.conf - # 显示交换空间信息 log "${GREEN}交换分区配置完成,当前内存和交换空间状态:${NC}" free -h | tee -a $LOG_FILE fi +# 调整swappiness参数(控制系统对交换空间的使用倾向) +# 放在 if/else 之外:无论是否重建交换文件,都按用户设置应用 swappiness +echo "vm.swappiness=${SWAPPINESS}" > /etc/sysctl.d/99-swappiness.conf +sysctl -p /etc/sysctl.d/99-swappiness.conf +log "${GREEN}swappiness 已设置为: ${SWAPPINESS}${NC}" + # =========================================== # 9. Fail2ban安装和配置 # ===========================================