![Postgresql 未运行。它处于活动状态但已退出](https://linux22.com/image/755005/Postgresql%20%E6%9C%AA%E8%BF%90%E8%A1%8C%E3%80%82%E5%AE%83%E5%A4%84%E4%BA%8E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81%E4%BD%86%E5%B7%B2%E9%80%80%E5%87%BA.png)
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*'