web-dev-qa-db-ja.com

/ var / run内のディレクトリは、ハードリブート後に削除されます

Sphinx pidを/var/run/sphinx/searchd.pidに保持していますが、ディレクトリをハードリブートするたびに、/ var/run/sphinxが消えてsphinxの起動に失敗します。そのディレクトリを固定したり、自動的に作成したりする方法はありますか?人々は通常、この状況をどのように扱いますか?私はUbuntu Hardyを使用しています

19
Tony Amoyal

このディレクトリは設計上は一時的です。内容がブート全体に行き渡った場合、さまざまな種類の制御スクリプトがそこを見て、どのプロセスが信号を送るべきかを確認するため、あらゆる種類の醜い効果が発生する可能性があります。最近のシステムでは、この一時的な性質は/var/runtmpfsとしてマウントすることで適用されますが、古いシステムは起動時にディレクトリ内のすべてを削除しただけです。

したがって、Sphinxまたはその起動スクリプトを構成して、そのディレクトリを作成するか、PIDファイルを/var/runに直接書き込む必要があります。

18
Phil Miller

少なくとも2つの可能性があります。

  • initスクリプトを変更してmkdir -p /var/run/sphinx/

または

  • セットする - pid_file = /var/run/sphinx-searchd.pid/etc/sphinx.conf

私は2番目のものです。

15
drAlberT

現在、これらのような一時ファイルとディレクトリを作成するための集中型メカニズムがあります。この方法を使用するサービスは、独自の起動スクリプトからmkdirコマンドを削除し、Ubuntuを使用して.confファイルを/etc/tmpfiles.d、/run/tmpfiles.d、または/usr/lib/tmpfiles.dに配置できます。サービスは最後のオプションを好むようです。あなたのケースのためにファイルを作成します/usr/lib/tmpfiles.d/sphinx.conf
ファイルの内容は次のようになります:
d /var/run/sphinx 0755 root root

ここでdはディレクトリを表し、その隣にはパス、権限、所有者、グループがあります。
これにより、/var/run/sphnix再起動時のディレクトリ。

完全なドキュメントをチェックアウトしてください tmpfiles.d

3
Aakash Singhal