Centos
/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
重啟後不存在事件。所以真的有幾個問題,因為我在研究中沒有找到明確的答案。
/var/run 中的目錄是如何以及何時創建的,它是在啟動服務時創建的還是以什麼方式創建的?
什麼可能導致此特定問題發生並且在重新啟動後不啟動 postgres?
我以前從未見過這種行為,儘管平心而論,到目前為止我一直在使用 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
工具在系統啟動時自動創建鎖定目錄和其他臨時儲存位置等內容。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
此處顯示的相同條目來手動更正。