feat(sysctl): 优化配置清理逻辑并增加参数有效性检测
This commit is contained in:
@@ -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 # 循环结束
|
||||||
|
|||||||
Reference in New Issue
Block a user