postgresql 无法正确启动退出活动(已退出)

Posted

技术标签:

【中文标题】postgresql 无法正确启动退出活动(已退出)【英文标题】:postgresql could not properly start exited with active (exited) 【发布时间】:2018-05-31 13:16:58 【问题描述】:

我从digitalocean 安装了 posgresql,并在安装结束时在终端中打印以下命令

/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start

我尝试使用sudo root 用户运行它,也尝试切换到postgres 用户,但出现以下错误

等待服务器启动..../bin/sh: 1: 无法创建日志文件: 权限被拒绝停止等待 pg_ctl:无法启动服务器 但是当我检查状态时它说 ● postgresql.service - PostgreSQL RDBMS Loaded:已加载 (/lib/systemd/system/postgresql.service;已启用;供应商预设: 启用)活动:自 2018 年 5 月 31 日星期四 13:11:18 UTC 起活动(退出); 56 秒前 Main PID: 3698 (code=exited, status=0/SUCCESS) 任务:0(限制:2362)CGroup:/system.slice/postgresql.service

5 月 31 日 13:11:18 登台 systemd1:正在启动 PostgreSQL RDBMS... 5 月 31 13:11:18 staging systemd1: 启动 PostgreSQL RDBMS。

除了exited,状态没有运行。上面的命令是做什么的,我该如何运行它?以前的版本没遇到过

【问题讨论】:

【参考方案1】:

这个想法是您提供实际的日志文件而不是 logfile,但我建议您在 postgresql.conf 中正确配置日志记录,并使用不带 -l 选项的 pg_ctl

logging_collector 设置为on。 将log_filename 设置为postgresql-%a.log。 将log_rotation_size 设置为0。 将log_truncate_on_rotation 设置为on

然后,您将在 PostgreSQL 数据目录的 log 子目录中获取日志文件,它们将每周轮换一次。

【讨论】:

但是这个命令的作用以及为什么 sudo 不起作用。是说在您提到的程序之后我不需要运行上述命令? 您显然位于没有写入权限的目录中,因此出现错误消息。如果您按照我的建议配置日志记录,您仍然需要使用pg_ctl 启动服务器,但您不再需要使用-l 选项。

以上是关于postgresql 无法正确启动退出活动(已退出)的主要内容,如果未能解决你的问题,请参考以下文章

C++笔记:error MSB6006: “CL.exe”已退出,代码为 2 + VS无法启动程序,系统找不到指定的文件

如何轮询 iOS 应用程序并检查它是不是已退出活动?

C# WinForm程序中强制退出程序以及启动程序

错误记录Ubuntu 下 VSCode 编译报错 ( 无法生成和调试,因为活动文件不是 C 或 C++ 源文件。终端进程启动失败(退出代码: -1)。终端将被任务重用,按任意键关闭。 )

是否可以检测应用程序的退出?

STM32F0 在 SPI 接收中断时从 STOP 退出