Я запускаю 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, блоки также будут запущены. При использовании с отключением или маской блоки также будут остановлены. Операция запуска или остановки выполняется только после успешного выполнения соответствующей операции включения или отключения.