feat(sysctl): 优化配置清理逻辑并增加参数有效性检测

This commit is contained in:
严浩
2026-03-23 10:53:28 +08:00
parent 85d0825a88
commit b1cea78d4a
+14 -1
View File
@@ -53,6 +53,7 @@ sysctl_config() {
# 确定 sysctl 配置文件路径 # 确定 sysctl 配置文件路径
SYSCTL_CONF="/etc/sysctl.conf" SYSCTL_CONF="/etc/sysctl.conf"
SYSCTL_CLEANUP_FILES=("/etc/sysctl.conf" "/etc/sysctl.d/99-sysctl.conf" "/etc/sysctl.d/999-custom.conf")
if [ "$SYSTEM_TYPE" = "debian" ]; then 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) DEBIAN_VERSION=$(grep -oP 'VERSION_ID="\K[^"]+' /etc/os-release 2>/dev/null || cat /etc/debian_version 2>/dev/null | cut -d. -f1)
@@ -85,7 +86,19 @@ sysctl_config() {
for SETTING in "${SYSCTL_SETTINGS[@]}"; do # 遍历数组 for SETTING in "${SYSCTL_SETTINGS[@]}"; do # 遍历数组
KEY=$(echo "$SETTING" | cut -d '=' -f 1) # 截取=左边的字符串 KEY=$(echo "$SETTING" | cut -d '=' -f 1) # 截取=左边的字符串
sed -i "/^$KEY *= *[0-9]*/d" "$SYSCTL_CONF" # 删除已有的配置 KEY_PATH="/proc/sys/${KEY//./\/}"
if [ ! -e "$KEY_PATH" ]; then
print_yellow "跳过不支持的 sysctl: $KEY"
continue
fi
KEY_REGEX=${KEY//./\\.}
for CLEANUP_FILE in "${SYSCTL_CLEANUP_FILES[@]}"; do
if [ -f "$CLEANUP_FILE" ]; then
sed -i "/^[[:space:]]*${KEY_REGEX}[[:space:]]*=.*/d" "$CLEANUP_FILE"
fi
done
echo "$SETTING" >>"$SYSCTL_CONF" # 追加新的配置 echo "$SETTING" >>"$SYSCTL_CONF" # 追加新的配置
# echo "已添加系统配置: $SETTING" # 输出提示信息 # echo "已添加系统配置: $SETTING" # 输出提示信息
done # 循环结束 done # 循环结束