Habe gerade mein System von 14.04 aufgerüstet. LTS bis 16.04.1 LTS, postgresql startet nicht auf systemd:
/etc/init.d/postgresql start
[ ok ] Starting postgresql (via systemctl): postgresql.service
# /etc/init.d/postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Вт 2016-08-09 13:40:51 MSK; 3min 23s ago
Process: 23142 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 23142 (code=exited, status=0/SUCCESS)Seems that
Scheint, dass das systemd-Skript falsche Daten enthält:
# cat /lib/systemd/system/postgresql.service
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.
[Unit]
Description=PostgreSQL RDBMS
[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on
[Install]
WantedBy=multi-user.target
Was sollte das richtige Skript für postgresql sein?
16.04
systemd
postgresql
Artur Eshenbrener
quelle
quelle
systemctl enable [email protected]
ist alles, was du brauchst.systemctl edit [email protected]
eine Überschreibung Datei mit systemd Richtlinien wie zu erstellen: [Service] Nizza = 15 IOSchedulingClass = 2 IOSchedulingPriority = 7Systemd sollte Skript von verwenden
/etc/init.d
. Stattdessen verwendet systemd eine Art Vorlagendatei. Gehen Sie folgendermaßen vor, um das zu beheben:Ungültiges Dienstskript entfernen:
# rm /lib/systemd/system/postgresql.service
Daemon-Skripte neu laden:
# systemctl daemon-reload
Postgresql-Dienst aktivieren:
# systemctl enable postgresql
Danach würden Sie in der Lage sein , Postgres mit allen möglichen bevorzugten Varianten zu starten:
sudo systemctl start postgresql
,sudo service postgresql start
odersudo /etc/init.d/postgresql start
. Um sicherzustellen, dass postgresql tatsächlich laufen zu überprüfen, überprüfen Sie bitte den Status des Service:sudo systemctl status postgresql
. Es sieht so aus:quelle
systemctl _action_ postgresql@_version_
, dass sie ausgeführt werdenIch hatte das gleiche Problem, nachdem ich postges9 gelöscht und 10 auf meinem ubuntu16 installiert hatte. Anfangs habe ich die Datei /lib/systemd/system/postgresql.service mit folgendem Inhalt bearbeitet:
Und ich kann mit systemctl restart / stop / start den postgresql-Dienst steuern. Aus irgendeinem Grund wurde die obige Datei jedoch überschrieben (möglicherweise nach einer Systemaktualisierung) und ich konnte den Befehl systemctl nicht mehr ausführen, um den postgresql-Server zu starten und zu stoppen. Nach einigem Lesen wurde mir klar, dass Sie die obige Datei nicht bearbeiten sollen. Verwenden Sie stattdessen systemctl edit foo, um die Standardeinstellungen zu überschreiben. Nachdem ich der über den folgenden Link vorgeschlagenen Lösung gefolgt bin, scheint mein System ordnungsgemäß mit postgresql zu funktionieren.
Wie kann ich systemd-Dienste überschreiben oder konfigurieren?
quelle
Nicht die schönste Lösung, aber das löst das Problem, ohne in irgendetwas eintauchen zu müssen. Fügen Sie dies zu cron hinzu:
quelle