You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过psql命令配置postgresql.conf:交互式脚本编写及参数修改问题

直接修改postgresql.conf的交互式配置脚本

由于ALTER SYSTEM会将配置写入postgresql.auto.conf并覆盖postgresql.conf的对应参数,而你需要直接修改postgresql.conf文件,下面提供一个bash脚本实现交互式修改需求:

脚本实现

#!/bin/bash

# 替换为你的postgresql.conf实际路径
PG_CONF="/var/lib/postgresql/14/main/postgresql.conf"

# 检查配置文件是否存在
if [ ! -f "$PG_CONF" ]; then
    echo "错误:未找到postgresql.conf文件,请检查路径设置"
    exit 1
fi

# 定义需要处理的参数列表,可按需添加或删除
TARGET_PARAMS=(
    "shared_preload_libraries"
    "work_mem"
    "maintenance_work_mem"
    "effective_cache_size"
)

# 提取参数当前值的辅助函数
get_current_param_value() {
    local param_name=$1
    # 匹配未注释的参数行,提取并清理值(去除引号、多余空格)
    grep -E "^${param_name}\s*=" "$PG_CONF" | sed -E "s/^${param_name}\s*=\s*//" | sed -e "s/^'//" -e "s/'$//" -e "s/\s+$//"
}

# 遍历参数进行交互式修改
for param in "${TARGET_PARAMS[@]}"; do
    current_value=$(get_current_param_value "$param")
    echo "参数 ${param} 当前值:${current_value}"
    
    read -p "请输入${param}的新值(留空则保持原值):" input_value
    
    if [ -n "$input_value" ]; then
        # 根据参数类型处理替换逻辑:带引号的列表参数(如shared_preload_libraries)
        if [[ "$current_value" == *,* ]]; then
            sed -i.bak -E "s/^${param}\s*=\s*'.*'/${param}='${input_value}'/" "$PG_CONF"
        else
            # 普通数值/字符串参数
            sed -i.bak -E "s/^${param}\s*=\s*.*/${param}=${input_value}/" "$PG_CONF"
        fi
        echo "已更新${param}为:${input_value}"
    else
        echo "未修改${param},保留原值"
    fi
    echo "------------------------"
done

echo "所有参数处理完成!请重启PostgreSQL服务使新配置生效"

使用说明

  1. 调整路径:将脚本中的PG_CONF变量值改为你的PostgreSQL配置文件实际路径
  2. 配置参数列表:在TARGET_PARAMS数组中添加或删除需要处理的参数
  3. 运行脚本:确保脚本有执行权限(chmod +x pg_conf_edit.sh),并以拥有配置文件修改权限的用户运行(通常需要sudo)
  4. 生效配置:修改完成后重启PostgreSQL服务,例如:sudo systemctl restart postgresql

针对shared_preload_libraries的示例操作

当脚本提示输入该参数新值时,直接输入pgaudit,$libdir/dbms_pipe,$libdir/edb_gen,$libdir/dbms_aq即可完成添加,脚本会自动替换原有的参数值。

注意:脚本会自动生成配置文件备份(如postgresql.conf.bak),若修改出错可恢复备份文件。

内容的提问来源于stack exchange,提问作者Mayank Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:56:08