我有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
条目进行手动更正。