Właśnie zaktualizowałem swój system z 14.04. LTS do 16.04.1 LTS, postgresql nie uruchamia się na 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
Wygląda na to, że skrypt systemowy zawiera nieprawidłowe dane:
# 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
Jaki powinien być poprawny skrypt dla postgresql?
16.04
systemd
postgresql
Artur Eshenbrener
źródło
źródło
systemctl enable [email protected]
to wszystko czego potrzebujesz.systemctl edit [email protected]
utworzyć plik override z Systemd dyrektyw, takich jak: [Usługi] Nicea = 15 = 2 IOSchedulingPriority IOSchedulingClass = 7Systemd powinien użyć skryptu z
/etc/init.d
. Zamiast tego systemd używa pewnego rodzaju pliku szablonu. Aby to naprawić, wykonaj następujące kroki:Usuń niepoprawny skrypt usługi:
# rm /lib/systemd/system/postgresql.service
Przeładuj skrypty demona:
# systemctl daemon-reload
Włącz usługę postgresql:
# systemctl enable postgresql
Po tym, będzie można rozpocząć postgres wszelkich korzystnych wariantach:
sudo systemctl start postgresql
,sudo service postgresql start
, lubsudo /etc/init.d/postgresql start
. Aby sprawdzić, że PostgreSQL faktycznie uruchomić, należy sprawdzić stan usługi:sudo systemctl status postgresql
. Może wyglądać następująco:źródło
systemctl _action_ postgresql@_version_
uruchomienieMiałem ten sam problem po usunięciu postges9 i zainstalowaniu 10 na moim ubuntu16. Początkowo edytowałem plik /lib/systemd/system/postgresql.service o następującej treści:
I mogę użyć systemctl restart / stop / start do sterowania usługą postgresql. Jednak z jakiegoś powodu powyższy plik został nadpisany (być może po aktualizacji systemu) i nie mogłem już uruchomić polecenia systemctl, aby uruchomić i zatrzymać serwer postgresql. Po przeczytaniu zdałem sobie sprawę, że nie powinieneś edytować powyższego pliku. Zamiast tego powinieneś użyć systemctl edit foo, aby zastąpić wartości domyślne. Po skorzystaniu z rozwiązania sugerowanego przez poniższy link, mój system wydaje się działać poprawnie z postgresql.
Jak zastąpić lub skonfigurować usługi systemowe?
źródło
Nie jest to najlepsze rozwiązanie, ale to rozwiązuje problem bez konieczności nurkowania. Dodaj to do crona:
źródło