PostgreSQL /etc/systemd/postgresql@.service

原始 📋 Ubuntu 20.04 LTS (Focal Fossa) 40 行

适用于

当前查看:
Ubuntu 20.04 LTS (Focal Fossa)
相同于:
Debian 10 (Buster) Debian 11 (Bullseye) Debian 12 (Bookworm) Debian 13 (Trixie) Ubuntu 22.04 LTS (Jammy Jellyfish) Ubuntu 24.04 LTS (Noble Numbat)
其他版本:

详情

大小
40 行
MD5
5b25f284506ad288820d584bea86fb23
SHA256
4c44931bba34e0754b7c0762852a5c1b615a1e307df9c458d231232d55e4c907
/etc/systemd/postgresql@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

[Unit]
Description=PostgreSQL Cluster %i
AssertPathExists=/etc/postgresql/%I/postgresql.conf
RequiresMountsFor=/etc/postgresql/%I /var/lib/postgresql/%I
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service
# stop server before networking goes down on shutdown
After=network.target

[Service]
Type=forking
# -: ignore startup failure (recovery might take arbitrarily long)
# the actual pg_ctl timeout is configured in pg_ctl.conf
ExecStart=-/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i start
# 0 is the same as infinity, but "infinity" needs systemd 229
TimeoutStartSec=0
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
TimeoutStopSec=1h
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/run/postgresql/%i.pid
SyslogIdentifier=postgresql@%i
# prevent OOM killer from choosing the postmaster (individual backends will
# reset the score to 0)
OOMScoreAdjust=-900
# restarting automatically will prevent "pg_ctlcluster ... stop" from working,
# so we disable it here. Also, the postmaster will restart by itself on most
# problems anyway, so it is questionable if one wants to enable external
# automatic restarts.
#Restart=on-failure
# (This should make pg_ctlcluster stop work, but doesn't:)
#RestartPreventExitStatus=SIGINT SIGTERM

[Install]
WantedBy=multi-user.target

复制粘贴

curl:
curl https://exampleconfig.com/api/v1/config/original/5b25f284506ad288820d584bea86fb23?hint=postgresql@.service
wget:
wget -O postgresql@.service https://exampleconfig.com/api/v1/config/original/5b25f284506ad288820d584bea86fb23?hint=postgresql@.service

给 AI Agent 用

<prompt><role>DevOps agent</role><source url='https://exampleconfig.com/api/v1/config/original/5b25f284506ad288820d584bea86fb23?hint=postgresql@.service' /><config><app>PostgreSQL</app><os>Ubuntu 20.04 LTS (Focal Fossa)</os><location>/etc/systemd/postgresql@.service</location><lines>40</lines><md5>5b25f284506ad288820d584bea86fb23</md5><sha256>4c44931bba34e0754b7c0762852a5c1b615a1e307df9c458d231232d55e4c907</sha256></config></prompt>

粘贴到 Claude、ChatGPT 或任何 AI 助手里。

安装 PostgreSQL

Alpine Linux

sudo apk add postgresql

Debian

sudo apt update && sudo apt install postgresql

Red Hat Enterprise Linux

sudo yum install postgresql17-server

Ubuntu

sudo apt update && sudo apt install postgresql

文件位置

文件路径
/etc/systemd/postgresql@.service
目录
/etc/systemd/
用途
系统级配置目录
说明
/etc/ 里的文件是系统级配置,影响所有用户。

FAQ

什么时候该用这个 postgresql@.service?

用来恢复缺失的默认文件、确认发行版本带了什么,或拿你的 PostgreSQL config 做 diff。

怎么恢复 PostgreSQL 的默认配置?

下载文件,把 /etc/systemd/postgresql@.service 里的当前配置备份好,替换掉,然后 reload 或 restart PostgreSQL。

postgresql@.service 适合直接上生产吗?

这是 Ubuntu 20.04 LTS (Focal Fossa) 的厂商默认配置,只能当基线。上生产前请检查安全和性能设置。

和其他 OS 版本有什么不同?

默认值会随发行版和版本变化,这份对应 Ubuntu 20.04 LTS (Focal Fossa)。

我可以用它来排查 PostgreSQL 吗?

可以。和你的配置做 diff 找出漂移,然后只恢复需要的段落。