PostgreSQL /etc/systemd/postgresql@.service

Original 📋 Debian 9 (Stretch) 33 lines

Details

Size
33 lines
MD5
c60e225d986978418a05bc6064fa0c3f
SHA256
5d3626d9805765d6db63fba1ef7314a294f1b4085f5a2814ada58ea3fcf9cfa8
/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
ConditionPathExists=/etc/postgresql/%I/postgresql.conf
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service

[Service]
Type=forking
# @: use "postgresql@%i" as process name
ExecStart=@/usr/bin/pg_ctlcluster postgresql@%i --skip-systemctl-redirect %i start
ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect -m fast %i stop
ExecReload=/usr/bin/pg_ctlcluster --skip-systemctl-redirect %i reload
PIDFile=/var/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

Copy & Paste

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

For AI Agents

<prompt><role>DevOps agent</role><source url='https://exampleconfig.com/api/v1/config/original/c60e225d986978418a05bc6064fa0c3f?hint=postgresql@.service' /><config><app>PostgreSQL</app><os>Debian 9 (Stretch)</os><location>/etc/systemd/postgresql@.service</location><lines>33</lines><md5>c60e225d986978418a05bc6064fa0c3f</md5><sha256>5d3626d9805765d6db63fba1ef7314a294f1b4085f5a2814ada58ea3fcf9cfa8</sha256></config></prompt>

Paste into Claude, ChatGPT, or any AI assistant.

Install 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

File Location

File Path
/etc/systemd/postgresql@.service
Directory
/etc/systemd/
Significance
System-wide configuration directory
Description
Files in /etc/ contain system-wide configuration settings that affect all users.

FAQ

When should I use this postgresql@.service?

Use it to restore a missing default, confirm what shipped, or diff against your current PostgreSQL config.

How do I restore PostgreSQL defaults?

Download the file, back up the current one in /etc/systemd/postgresql@.service, replace it, then reload or restart PostgreSQL.

Is postgresql@.service safe for production?

It is the vendor default for Debian 9 (Stretch). Treat it as a baseline and review security and performance settings before production use.

How does this differ from other OS versions?

Defaults vary by distro and version. This copy matches Debian 9 (Stretch).

Can I use this for PostgreSQL troubleshooting?

Yes. Diff it against yours to find drift, then restore only the sections you need.