diff --git a/1.sh b/1.sh index 6cf23fe..635703d 100644 --- a/1.sh +++ b/1.sh @@ -45,6 +45,22 @@ sysctl_config() { print_green "###################" print_green "##### sysctl ######" print_green "###################" + + # 确定 sysctl 配置文件路径 + SYSCTL_CONF="/etc/sysctl.conf" + if [ "$SYSTEM_TYPE" = "debian" ]; then + DEBIAN_VERSION=$(grep -oP 'VERSION_ID="\K[^"]+' /etc/os-release 2>/dev/null || cat /etc/debian_version 2>/dev/null | cut -d. -f1) + + if [ -z "$DEBIAN_VERSION" ]; then + echo "无法确定 Debian 版本,使用默认配置文件" + elif (( DEBIAN_VERSION >= 13 )); then + SYSCTL_CONF="/etc/sysctl.d/999-custom.conf" + echo "检测到 Debian $DEBIAN_VERSION,使用 $SYSCTL_CONF" + else + echo "检测到 Debian $DEBIAN_VERSION,使用 $SYSCTL_CONF" + fi + fi + SYSCTL_SETTINGS=( "net.core.rmem_max=16777216" "net.core.wmem_max=16777216" @@ -55,13 +71,17 @@ sysctl_config() { "net.ipv4.tcp_notsent_lowat=16384" # "net.ipv4.tcp_notsent_lowat=131072" ) + + # # 确保配置文件目录存在 + # mkdir -p "$(dirname "$SYSCTL_CONF")" + for SETTING in "${SYSCTL_SETTINGS[@]}"; do # 遍历数组 KEY=$(echo "$SETTING" | cut -d '=' -f 1) # 截取=左边的字符串 - sed -i "/^$KEY *= *[0-9]*/d" /etc/sysctl.conf # 删除已有的配置 - echo "$SETTING" >>/etc/sysctl.conf # 追加新的配置 + sed -i "/^$KEY *= *[0-9]*/d" "$SYSCTL_CONF" # 删除已有的配置 + echo "$SETTING" >>"$SYSCTL_CONF" # 追加新的配置 # echo "已添加系统配置: $SETTING" # 输出提示信息 done # 循环结束 - sysctl -p + sysctl --system } detect_cn_network() {