Postgresql 未运行。它处于活动状态但已退出

Postgresql 未运行。它处于活动状态但已退出

Postgresql 没有运行。

版本

PostgreSQL Version: 10.12
Distro: Linux Mint 19.3 (Tricia)/Ubuntu 18.04

不工作:

$ sudo service postgresql restart
$ sudo systemctl restart postgresql

systemctl 状态 postgresql:

╭─root@danial /opt
╰─➤  systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2020-07-13 22:52:54 +03; 9min ago
  Process: 22887 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 22887 (code=exited, status=0/SUCCESS)

Jul 13 22:52:54 17-V13-5 systemd[1]: Starting PostgreSQL RDBMS...
Jul 13 22:52:54 17-V13-5 systemd[1]: Started PostgreSQL RDBMS.

ss -nlp | grep postgre

u_str             LISTEN              0                    128                                                   /var/run/postgresql/.s.PGSQL.5432 188329                                                 * 0                                    users:(("postgres",pid=22869,fd=8))

tcp               LISTEN              0                    128                                                                           127.0.0.1:5432                                             0.0.0.0:*                                  

参见 pg_lsclusters

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log

ps ax | grep -i postgresq

 1495 ?        S      0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

系统控制状态[电子邮件保护]

[email protected] - PostgreSQL Cluster 10.12-main
   Loaded: loaded (/lib/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: inactive (dead)
Condition: start condition failed at Wed 2020-07-15 07:20:02 +03; 51s ago

答案1

systemd单元postgresql.service用作顶级分组服务,它除了启动和停止依赖于它的其他服务之外什么也不做。

随着它的实施服务,它需要有一个假人执行开始

ExecStart=/bin/true
RemainAfterExit=on

您可以通过运行来检查

systemctl cat postgresql.service

然而(不幸的是),它自己的状态并未说明依赖于的服务。它只是告诉您postgresql.service已启动且依赖请求启动的服务。

答案2

正如@kofeman 所解释的,postgresql.service仅用于管理实际安装的 postgresql 集群的服务。

要查看数据库集群服务的实际状态,请使用

systemctl status 'postgresql*'

这将列出每个已安装集群的状态。

当重新启动(或重新加载)postgres 时,您可以使用它来获得有用的反馈:

systemctl restart postgresql && systemctl status 'postgresql*'

相关内容