Centos

什麼可能導致 /var/run 中的目錄在啟動時消失/不被創建?(CentOS 7.3)

  • July 30, 2021

今天遇到一個問題,Apache 因為/var/run/httpd失去而無法載入。經過大量尋找錯誤的原因後,我得到了([Tue Jul 25 00:06:31.574386 2017] [auth_digest:error] [pid 6179] (2)No such file or directory: AH01760: failed to initialize shm - all nonce-count checking, one-time nonces, and MD5-sess algorithm disabled)。

然後我看到 MariaDB 缺少它的/var/run/mysql目錄,而 PostgreSQL缺少它的目錄。

什麼會導致系統啟動時無法製作/在重新啟動之間保存?

我不希望按照這個問題的建議修改初始化腳本。

編輯:ls -dl /var/run&的輸出ls -dl /run

lrwxrwxrwx. 1 root root 6 Dec 15  2015 /var/run -> ../run
drwxr-xr-x 25 root root 800 Jul 26 03:40 /run

{/var,}/run 在啟動時被 systemd 蒸發。如此低的價值,這是一個美妙且完全出乎意料的驚喜。

如果要確保引導後目錄存在,則必須使用 systemd 的 tmpfiles 部分掛鉤。

/usr/lib/tmpfiles.d/httpd.conf
::::::::::::::
d /run/httpd   710 root apache
d /run/httpd/htcacheclean   700 apache apache

/usr/lib/tmpfiles.d/mariadb.conf
::::::::::::::
d /var/run/mariadb 0755 mysql mysql -

而且,如果您的 tmpfiles 條目失去,我敢打賭您手動滾動您自己的包(並為every.single.release 調整、測試和推廣)。只要我們同意,對於任何具​​有規模或 SLA 的東西來說,這通常是一個壞主意,但那很酷。

這些配置文件位於 /usr/lib/tmpfiles.d 和 /etc/tmpfiles.d/。

我需要取消屏蔽並啟用 systemd-tmpfiles-setup.service 以便在啟動時自動設置 /run: systemctl unmask systemd-tmpfiles-setup.service systemctl enable systemd-tmpfiles-setup.service

引用自:https://unix.stackexchange.com/questions/381571