今日、_/var/run/httpd
_がないためにApacheがロードされない問題に遭遇しました。 find を何度も探した後、私が得ていたエラーの原因は([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には missing ディレクトリがあったことがわかりました。
システムの起動時にそれらが行われない/再起動の間に保存されない原因は何ですか?
この question で提案されているように、initスクリプトを変更する必要はありませんexpect。
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
_
他のSEネットワークサイト、フォーラム、ニュースグループなどを調べた後、ローカルとリモートのファイルシステムのマウント順序に関連しているのではないかと疑問に思いました(このサーバーには、それぞれサブディレクトリバインドがあるCIFS共有のペアがマウントされています)別の場所にマウントされています)。
CIFS共有を/etc/fstab
、すべてのバインドマウントを下に移動しました。
その後、再起動しました。
今/run
別名/var/run
は正常に機能しています。
私はしません知っているその編集/etc/fstab
重要-しかし、それが私が知っている唯一の実質的な変更です。
{/ 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/にあります。
ブート時に/ runを自動的にセットアップするには、systemd-tmpfiles-setup.serviceのマスクを解除して有効にする必要がありました:systemctl unmask systemd-tmpfiles-setup.service systemctl enable systemd-tmpfiles-setup.service