Назад | Перейти на главную страницу

`systemctl disable --now postgresql` не останавливает демон

Я запускаю Debian Stretch и PostgreSQL 10 с сайта apt.postgresql.org. Когда я делаю:

postgresql disable --now postgresql

сервер базы данных не останавливается. Он говорит:

Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.                                                                                                
Executing: /lib/systemd/systemd-sysv-install disable postgresql                                      
insserv: warning: current start runlevel(s) (empty) of script `postgresql' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `postgresql' overrides LSB defaults (0 1 6).

Но это, наверное, не имеет большого значения.

systemctl disable --now postgresql@10-main выполняет свою работу, но мне интересно postgresql Блок. это start, stop, restart, reload задачи работают нормально.

Я что-то упускаю? Это ошибка или ограничение systemd? Или пакета PostgreSQL?

И теперь, когда я смотрю на это, systemctl disable postgresql не препятствует запуску PostgreSQL при загрузке. Я не хочу быть привязанным к какой-то конкретной версии. Я думал, что остановить и отключить PostgreSQL можно будет просто systemctl disable --now postgresql. Но оказывается, мне нужно:

systemctl list-units 'postgresql*' \
    | grep ^postgresql \
    | awk '{print $1}' \
    | xargs -r -I{} -d\\n systemctl disable --now {}

И даже это не всегда работает по каким-то загадочным причинам. У меня есть копия каталога данных для тестирования. Затем в скрипте я восстанавливаю базу данных до исходного состояния (stop, rm, cp, start). После чего я пытаюсь остановить и отключить pg, как указано выше. Он отключается, но не останавливается. Я могу видеть все процессы, запущенные перед командой, я вижу:

database system is ready to accept connections

в журнале (якобы полностью запущен). Но этого просто не произошло. Итак, прямо сейчас я делаю:

systemctl stop postgresql
systemctl list-units ... | xargs ... systemctl disable {}

Из страница руководства:

--now При использовании с enable, блоки также будут запущены. При использовании с отключением или маской блоки также будут остановлены. Операция запуска или остановки выполняется только после успешного выполнения соответствующей операции включения или отключения.