web-dev-qa-db-ja.com

起動時に/ var / run内のディレクトリが表示されない/作成されない原因は何ですか? (CentOS 7.3)

今日、_/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
_
6
warren

修正ではなく-修正。

他のSEネットワークサイト、フォーラム、ニュースグループなどを調べた後、ローカルとリモートのファイルシステムのマウント順序に関連しているのではないかと疑問に思いました(このサーバーには、それぞれサブディレクトリバインドがあるCIFS共有のペアがマウントされています)別の場所にマウントされています)。

CIFS共有を/etc/fstab、すべてのバインドマウントを下に移動しました。

その後、再起動しました。

/run別名/var/runは正常に機能しています。

私はしません知っているその編集/etc/fstab重要-しかし、それが私が知っている唯一の実質的な変更です。

0
warren

{/ 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を備えたものに対しては通常悪い考えですが、それはクールです。

2
user2066657

これらの設定ファイルは/usr/lib/tmpfiles.dおよび/etc/tmpfiles.d/にあります。

ブート時に/ runを自動的にセットアップするには、systemd-tmpfiles-setup.serviceのマスクを解除して有効にする必要がありました:systemctl unmask systemd-tmpfiles-setup.service systemctl enable systemd-tmpfiles-setup.service

1
user283772