Просто обновленный моя система от 14,04. LTS к 16.04.1 LTS, postgresql не запускается на 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
Кажется, что systemd сценарий содержит неправильные данные:
# 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
Каков должен быть корректный сценарий для postgresql?
Это должно работать из поля при обеспечении правильной версии и кластерного имени.
Позволяет говорят, что Вы - рабочая версия 9.5
и кластер называют main
:
Запустите: systemctl start postgresql@9.5-main
Остановка: systemctl stop postgresql@9.5-main
Состояние: systemctl status postgresql@9.5-main
Включите автоматический запуск на начальной загрузке: systemctl enable postgresql@9.5-main
Отключите автоматический запуск на начальной загрузке: systemctl disable postgresql@9.5-main
foo@postgres:~$ systemctl status postgresql@9.5-main
● postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2017-03-31 17:44:46 CEST; 59s ago
Main PID: 4546 (postgres)
CGroup: /system.slice/system-postgresql.slice/postgresql@9.5-main.service
├ ─ 4546 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
├ ─ 4548 postgres: checkpointer process
├ ─ 4549 postgres: writer process
├ ─ 4550 postgres: wal writer process
├ ─ 4551 postgres: autovacuum launcher process
└ ─ 4552 postgres: stats collector process
Mar 31 17:44:44 postgres postgres[4546]: [1-2] 2017-03-31 17:44:44 CEST [4546] @ HINT: Future log output will go to log destination "syslog".
Mar 31 17:44:44 postgres postgres[4547]: [2-1] 2017-03-31 17:44:44 CEST [4547] @ LOG: database system was shut down at 2017-03-31 17:44:43 CEST
Mar 31 17:44:44 postgres postgres[4547]: [3-1] 2017-03-31 17:44:44 CEST [4547] @ LOG: MultiXact member wraparound protections are now enabled
Mar 31 17:44:44 postgres postgres[4546]: [2-1] 2017-03-31 17:44:44 CEST [4546] @ LOG: database system is ready to accept connections
Mar 31 17:44:44 postgres postgres[4551]: [2-1] 2017-03-31 17:44:44 CEST [4551] @ LOG: autovacuum launcher started
Mar 31 17:44:45 postgres postgres[4553]: [3-1] 2017-03-31 17:44:45 CEST [4553] [unknown]@[unknown] LOG: incomplete startup packet
Mar 31 17:44:46 postgres systemd[1]: Started PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres systemd[1]: Reloading PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres postgres[4546]: [3-1] 2017-03-31 17:44:47 CEST [4546] @ LOG: received SIGHUP, reloading configuration files
Mar 31 17:44:47 systemd[1]: Reloaded PostgreSQL Cluster 9.5-main.
Не самое хорошее решение, но это решает проблему, не имея необходимость погружаться во что-либо. Добавьте это к крону:
@reboot sleep 5; systemctl start postgresql
Systemd должен использовать сценарий от /etc/init.d
. Вместо этого systemd использует некоторый шаблонный файл. Для фиксации этого следуйте, который ступает:
Удалите недопустимый сервисный сценарий:
# rm /lib/systemd/system/postgresql.service
Сценарии демона перезагрузки:
# systemctl daemon-reload
Включите postgresql сервис:
# systemctl enable postgresql
После этого Вы смогли бы запустить пост-ГРЭС с любых предпочтительных вариантов: sudo systemctl start postgresql
, sudo service postgresql start
, или sudo /etc/init.d/postgresql start
. Чтобы проверить что postgresql, на самом деле выполненный, проверьте состояние сервиса: sudo systemctl status postgresql
. Это должно быть похожим:
% sudo systemctl status postgresql
● postgresql.service - LSB: PostgreSQL RDBMS server
Loaded: loaded (/etc/init.d/postgresql; bad; vendor preset: enabled)
Active: active (running) since Пт 2016-08-12 10:13:43 MSK; 1h 37min ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/postgresql.service
├─4086 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
├─4099 postgres: checkpointer process
├─4100 postgres: writer process
├─4101 postgres: wal writer process
├─4102 postgres: autovacuum launcher process
└─4103 postgres: stats collector process
авг 12 10:13:40 ubuntu-precise systemd[1]: Starting LSB: PostgreSQL RDBMS server...
авг 12 10:13:40 ubuntu-precise postgresql[4009]: * Starting PostgreSQL 9.5 database server
авг 12 10:13:43 ubuntu-precise postgresql[4009]: ...done.
авг 12 10:13:43 ubuntu-precise systemd[1]: Started LSB: PostgreSQL RDBMS server.
Я имел ту же проблему после чистки postges9 и установил 10 на моем ubuntu16. Первоначально я отредактировал/lib/systemd/system/postgresql.service файл со следующим содержанием:
[Unit]
Description=PostgreSQL RDBMS
[Service]
Type=notify
User=postgres
ExecStart=/usr/lib/postgresql/10/bin/postgres -D /analysis2/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
И я могу использовать systemctl, перезапускают/останавливают/начинают для управления postgresql сервисом. Однако по некоторым причинам вышеупомянутый файл был перезаписан (возможно, после системного обновления), и я не мог выполнить команду systemctl, чтобы запустить и больше останавливать postgresql сервер. После некоторого чтения я понял, что Вы не предполагаетесь к edite вышеупомянутый файл. Вместо этого необходимо использовать нечто редактирования systemctl для перезаписи значений по умолчанию. После следования за решением, предложенным следующей ссылкой, моя система, кажется, работает правильно с postgresql.