1. ホーム
  2. linux

pidfile は /var/run に置かなければなりませんか?

2023-08-24 21:47:55

質問

技術的な面とスタイル的な面、両方の文脈で質問しています。

私のアプリケーション/デーモンは、pidファイルを /opt/my_app/run/ ?

するのは非常にまずいのでしょうか?

私のニーズはこうです: 私のデーモンは特定のユーザーの下で実行され、実装者は新しいディレクトリを mkdir して /var/run に新しいディレクトリを mkdir し、chown し、chgrp して、私のデーモンを実行させる必要があります。 pid ファイルを (デーモンに対して) ローカルに保つことはより簡単であるように思われます。

どのように解決するのですか?

アプリケーションのインストールディレクトリの下に pid ファイルを置くことはしません。 /opt/my_app/whatever . このディレクトリは読み取り専用でマウントされ、マシン間で共有され、そこにあるいかなる変更も侵入の可能性があるものとして扱うデーモンによって監視される可能性があります...。

pidfile の通常のロケーションは /var/run . ほとんどのユニットが起動時にこのディレクトリを掃除します。Ubuntuでは、これは /var/run インメモリファイルシステム(tmpfs)によって達成されます。

root で動作しているスクリプトからデーモンを起動する場合、 サブディレクトリとして /var/run/gmooredaemon を作成し、それをデーモン実行ユーザーに chown してから su にログインしてデーモンを起動します。

多くの最新の Linux システムでは、root として動作していないスクリプトやランチャーからデーモンを起動する場合、pid ファイルを /run/user/$UID に置くことができ、これは伝統的な /var/run . ランチャーのルート部分、またはルートとして実行されるブートスクリプトは、ディレクトリを作成する必要があることに注意してください(人間のユーザーの場合、ディレクトリはユーザーがログインするときに作成されます)。

そうでなければ、以下の場所を選んでください /tmp または /var/tmp しかし、これは、pid ファイルの名前が、世界的に書き込み可能なディレクトリにある場合、一意に決定することができないので、さらなる複雑さをもたらします。

いずれにせよ、配布者または管理者が pid ファイルの場所を簡単に変更できるようにします (コマンドラインオプション、およびおそらくコンパイル時オプション)。