/ var / run / postgresql重新启动后丢失

我有Centos7机器设置,我有postgres不启动后重新启动的问题。 即使当我尝试手动运行服务,我越来越

UTC FATAL: could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory 

仔细一看,我发现/var/run/postgresql不是重启后的事件。

所以有几个问题,因为我没有在我的研究中find明确的答案。

在/ var / run中甚至创build目录的时间是什么时候,是在创build服务时创build的还是什么方式?

什么可能导致这个特定的问题发生,而不是重新启动后启动postgres?

我以前从来没有见过这种行为,尽pipe平心而论,我迄今为止一直使用Ubuntu。

谢谢

如果你在你的系统上检查/var/run ,你会发现它实际上是一个到/run的符号链接:

 # ls -ld /var/run lrwxrwxrwx. 1 root root 6 Jan 19 09:12 /var/run -> ../run 

如果你检查/run ,你会发现它实际上是一个tmpfs挂载点:

 # mount | grep /run tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755) 

tmpfs文件系统是内存中的文件系统:当系统重新引导时,任何消失的内容。 正如Federico在评论中所说,CentOS 7(以及Fedora和RHEL 7等)使用systemd-tmpfiles工具在系统引导时自动创build诸如locking目录和其他临时存储位置之类的东西。

CentOS 7中包含的postgresql-server软件包已经做了正确的事情:

 # rpm -ql postgresql-server | grep tmpfiles /usr/lib/tmpfiles.d/postgresql.conf # cat /usr/lib/tmpfiles.d/postgresql.conf d /var/run/postgresql 0755 postgres postgres - 

如果您正在使用第三方postgresql软件包,请不要惊讶它不能与CentOS正确集成。 您可以通过设置与tmpfiles.d显示的相同的tmpfiles.d条目进行手动更正。