So starten Sie den PostgreSQL-Server unter CentOS 7 neu

15

Ich habe PostgreSQL 10.1 unter einer CentOS 7.3-Umgebung installiert.

Der Dienst wird gestartet ( postmaster.pidDatei vorhanden unter /var/lib/pgsql/10/data), aber ich muss die Konfiguration neu laden oder den Server nach einer Änderung in neu starten pg_hba.conf.

Wenn ich jedoch verschiedene Befehle ausprobiere, erhalte ich Folgendes:

pg_ctl reload -D /var/lib/pgsql/10/data
bash: pg_ctl: command not found

service postgresql reload
Redirecting to /bin/systemctl reload postgresql.service
Failed to reload postgresql.service: Unit not found.
Sébastien Clément
quelle

Antworten:

30

Ich habe herausgefunden, dass Sie den genauen Namen für den PostgreSQL-Dienst angeben müssen , den Sie unter der Liste der Dienste finden können systemctl(siehe auch diesen Beitrag ):

systemctl list-units|grep postgresql
postgresql-10.service                                                                     loaded active running   PostgreSQL 10 database server

Dann können Sie verwenden service:

service postgresql-10.service reload

oder

service postgresql-10.service restart

Alternativ können Sie den folgenden systemctlBefehl verwenden:

/bin/systemctl reload postgresql-10.service

oder

/bin/systemctl restart postgresql-10.service
Sébastien Clément
quelle
5

Wenn Sie sudogoer als Rolle in postgresql haben, können Sie alternativ Folgendes verwenden:

sudo systemctl restart postgresql
usr
quelle
2
Das ist falsch, die Einheit heißtpostgresql-10
Gaius
Das ist nicht falsch. Für mich geht das. Auch hier ist ein weiterer Beweis: linode.com/docs/databases/postgresql/…
usr
Die .service-Datei kann beliebig aufgerufen werden. Es befindet sich normalerweise unter / usr / lib / systemd / system und kann nach Belieben umbenannt werden. Wenn Sie es jedoch anpassen, wird empfohlen, es nach / etc / systemd / system
medley56
1
$ sudo systemctl restart postgresql-10

Oder besser:

$ /usr/pgsql-10/bin/pg_ctl reload

Oder zuerst (einmalig):

    $ sudo ln -s /usr/pgsql-10/bin/pg_ctl /usr/bin/pg_ctl

und dann (jedes Mal):

    $ pg_ctl reload

Hinweis: pg_ctlKann nicht als Root ausgeführt werden .

Mir-Ismaili
quelle
0

Ich weiß nicht, wie Ihre Servicedatei eingerichtet ist, daher kann ich Ihren systemd-Befehl nicht debuggen. Es ist möglich, dass es etwas anderes heißt, als Sebastien vorschlägt.

Was pg_ctl betrifft, ist dies ein Ergebnis der Installation, bei der das Verzeichnis nicht zum Pfad hinzugefügt wird. (Es gibt Gründe dafür, die in den Kommentaren hier erwähnt werden ). Es gibt verschiedene /usr/pgsql-x.x/binLösungsmöglichkeiten , aber ich empfehle, nur den Pfad des Postgres-Benutzers zu erweitern. PATH=$PATH:/usr/pgsql-x.x/bin Fügen .bash_profileSie einfach dem Postgres-Benutzer hinzu, und Sie sollten bereit sein, loszulegen .

medley56
quelle
0

Sie können auch (PostgresSQL 11 unter MX Linux (Debian 9, Stretch)) verwenden -

/etc/init.d/postgresql status

/etc/init.d/postgresql stop

/etc/init.d/postgresql restart
Glücklich
quelle
0

Stellen Sie sicher, dass dies /sbinTeil Ihres Pfads ist, wenn Sie die Befehle serviceund systemctlausführen.

Cheryl Grant
quelle