9

私の質問はこの質問に関連していますが、問題のプロセスはcronから実行され、root以外のユーザーによって実行されます。そのため、多くのユーザーは実際にはホーム ディレクトリを持っていません (または、ホーム ディレクトリが指して/usr/share/package_nameいる PID ファイルの理想的な場所ではありません)。

/var/runこのディレクトリは root 以外は書き込みできないため、格納には問題があります。

を使用することもできます/tmpが、セキュリティ上の理由からこれが理想的かどうかは疑問です。

適切なユーザーが所有するディレクトリを作成する起動スクリプトを手配できます ( tmpfs としてマウントされることが多く、永続的ではないため/var/run、パッケージのインストール時にこれを行うことはできません)。/var

ここでのベストプラクティスは何ですか?

4

1 に答える 1

3

いい質問です:)、私は今のところまったく同じです。これが正しい答えかどうかはわかりませんが、役に立てば幸いです。フィードバックもいただければ幸いです。

私はグーグルで調べたところ、ユーザーごとのデーモンを dbus サービスとして登録することがエレガントなソリューションであることがわかりました。dbus は、サービスが 1 回だけ実行されるようにすることができます。pidfile は必要ありません。

別の解決策(私の現在)は、次のようなディレクトリに PID ファイルを作成することです。

$HOME/.yourdaemon/pid

あなたのコメントの後、私はあなたが家に書くことができないことに気づきました. dbus を調べることをお勧めします

アップデート

考えがある。/tmp を使用していて、デーモンのユーザーが所有する yourdaemon.pid.UNIQUE_KEY という名前の pidfile を探している場合はどうなるでしょうか。これはうまくいくはずです。

UNIQUE_KEYランダムに生成する必要があります(競合状態の証明であるため、tempnam を使用することをお勧めします)。

于 2013-06-03T21:22:27.217 に答える