Какая команда перезапустит службу postgresql 12

Какая команда перезапустит службу postgresql 12

Я собираюсь перезапустить службу postgresql 12, запущенную в Ubuntu 18. Сначала я проверяю ее статус: sudo service postgresql status. Она говорит:

postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor pres
   Active: inactive (dead)
lines 1-3/3 (END)...skipping...
postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Хоть он и кажется неактивным, но я все равно могу подключиться.

Затем я запускаю еще одну проверку: systemctl status postgresql@12-mainтам написано:

root@db-services:/# systemctl status postgresql@12-main[email protected] - PostgreSQL Cluster 12-main
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/[email protected]
           └─override.conf
   Active: active (running) since Mon 2022-06-13 09:02:25 WIB; 5 months 27 days ago
 Main PID: 5807 (postgres)
    Tasks: 86 (limit: 4915)
   CGroup: /system.slice/system-postgresql.slice/[email protected]
           ├─ 1586 postgres: 12/main: postgres db_sync 10.100.3.248(61414) idle
           ├─ 1588 postgres: 12/main: postgres db_sync 10.100.3.248(61415) idle
           ├─ 1606 postgres: 12/main: docreg db_docreg 10.100.8.150(18385) idle
           ├─ 1607 postgres: 12/main: docreg db_docreg 10.100.8.150(18399) idle
           ├─ 1608 postgres: 12/main: docreg db_docreg 10.100.8.150(18401) idle
           ├─ 1609 postgres: 12/main: docreg db_docreg 10.100.8.150(18421) idle
           ├─ 2592 postgres: 12/main: docudigtl db_docudigtl 10.100.8.112(34956) idle
           ├─ 3518 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(48290) idle
           ├─ 5150 postgres: 12/main: docudigtl db_docudigtl 10.100.7.114(61504) idle
           ├─ 5807 /usr/lib/postgresql/12/bin/postgres -D /data/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.co
           ├─ 5883 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(48626) idle
           ├─ 6316 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(48704) idle
           ├─ 7049 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(48870) idle
           ├─ 7986 postgres: 12/main: docudigtl db_docudigtl 10.100.7.114(56240) idle
           ├─ 8146 postgres: 12/main: docudigtl db_docudigtl 10.100.8.114(47432) idle
           ├─ 8183 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(49022) idle
           ├─ 8360 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(49036) idle
           ├─ 8445 postgres: 12/main: docudigtl db_docudigtl 10.100.8.114(47478) idle
           ├─ 9590 postgres: 12/main: docudigtl db_docudigtl 10.100.8.106(56094) idle
           ├─ 9687 postgres: 12/main: docudigtl db_docudigtl 10.100.8.112(50980) idle
           ├─10148 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(40646) idle
           ├─10324 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(40680) idle
           ├─11079 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(49496) idle
           ├─11602 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(58152) idle
           ├─11886 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(44674) idle
           ├─12106 postgres: 12/main: docudigtl db_docudigtl 127.0.0.1(49618) idle
           ├─13112 postgres: 12/main: docudigtl db_docudigtl 10.100.6.145(55014) idle
           ├─13122 postgres: 12/main: docudigtl db_docudigtl 10.100.6.145(55015) idle
           ├─13145 postgres: 12/main: docudigtl db_mysapk 10.100.6.145(55016) idle
           ├─13202 postgres: 12/main: docudigtl db_docudigtl 10.100.7.114(62073) idle
           ├─13945 postgres: 12/main: checkpointer
           ├─13946 postgres: 12/main: background writer
           ├─13947 postgres: 12/main: walwriter
           ├─13948 postgres: 12/main: autovacuum launcher
           ├─13949 postgres: 12/main: stats collector
           ├─13950 postgres: 12/main: logical replication launcher

Так что он на самом деле активен!

  1. В чем разница между этими двумя командами?
  2. Какой из них следует использовать для перезапуска: systemctl restart postgresql@12-mainИЛИ sudo service postgresql restart?

решение1

Существуют специальные службы systemd, которые называютсяшаблонные услуги.

Служба шаблонов может принимать такой аргумент: template_service@argument.

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

systemctl запустить template_service@a
systemctl запустить template_service@b
systemctl запустить template_service@c

В Debian и некоторых производных дистрибутивах (например, Ubuntu):

Каждый экземпляр PostgreSQL (кластер) принадлежит инстанцированному postgresql@шаблонному сервису. Аргумент сервиса postgresql@принимает форму version-clustername.

Так, например, postgresql@12-mainесть служба systemd, которая представляет экземпляр сервера PostgreSQL 12 (кластер) с именем кластера main(которое является именем по умолчанию).

Есть еще одна служба systemd, которая называется просто postgresql. Это своего рода служба catch-all. Если вы ее запустите или остановите, все экземпляры PostgreSQL будут запущены или остановлены (это поведение можно отключить вstart.conf).

Однако вы не можете использовать systemctl status postgresqlдля проверки того, запущены ли какие-либо службы PostgreSQL, даже если в вашей системе настроен только один сервер PostgreSQL. Вам всегда следует проверять статус конкретной инстанцированной службы для получения осмысленного отчета о статусе.

Theserviceкоманда использовалась для старой системы init (SysV init), до появления systemd. Она все еще работает для обратной совместимости, но вам действительно следует использовать эту systemctlкоманду в системах, где доступен systemd.

Связанный контент