Centos

/var/run/postgresql 重啟後失去

  • June 22, 2018

我已經設置了 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此處顯示的相同條目來手動更正。

引用自:https://serverfault.com/questions/766287