GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Systemd-postgresql-Startskript

Wenn Sie von der Quelle installieren, müssen Sie eine systemd-Unit-Datei hinzufügen, die mit der Quellinstallation funktioniert. Für RHEL, Fedora sieht meine Unit-Datei so aus:

/usr/lib/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
# ... but allow it still to be effective for child processes
# (note that these settings are ignored by Postgres releases before 9.5)
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

# Maximum number of seconds pg_ctl will wait for postgres to start.  Note that
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=270

Environment=PGDATA=/usr/local/pgsql/data


ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down.
# Ideally, the timeout for starting PostgreSQL server should be handled more
# nicely by pg_ctl in ExecStart, so keep its timeout smaller than this value.
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Aktivieren Sie dann den Dienst beim Start und starten Sie den PostgreSQL-Dienst:

$ sudo systemctl daemon-reload # load the updated service file from disk
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql

# systemctl start postgresql.service

Einige Umgebungen würden service <name> start übersetzen bis systemctl start <name>.service , aber Sie müssen sich nicht darauf verlassen.


Linux
  1. Linux – Skript alle 30 Minuten mit Systemd ausführen?

  2. Linux – Speicherort des Fsck-Skripts?

  3. Timeout des Systemctl-Dienstes beim Start?

  4. systemd:SIGTERM unmittelbar nach dem Start

  5. Der postgresql-Dienst kann unter CentOS 7 nicht gestartet werden

Beginnen Sie mit der Verwendung von systemd als Tool zur Fehlerbehebung

So führen Sie ein Skript beim Booten in Debian 11 aus

So richten Sie die automatische Ausführung eines Python-Skripts mit Systemd ein

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

Node.js-Skript konnte nicht mit systemctl gestartet werden

Einfache Möglichkeit, abgestürzte Prozesse neu zu starten?