私のシステム/run
ディレクトリ内には、*.pid
拡張子があり、実行中のデーモンのプロセスIDを格納するファイルがたくさんあります。
% ls -1 /run/*.pid
acpid.pid
crond.pid
dhclient-wlp2s0.pid
irqbalance.pid
lightdm.pid
nginx.pid
rsyslogd.pid
そして、これは他の多くのデーモンが行うことであり、のデーモン管理スクリプトが/etc/init.d/*
最後に実行されたインスタンスからpidを読み取り、新しいインスタンスの開始時にそれを再利用することに一般的に気づきました。
どうして?デーモンを起動して新しいpidを指定しないのはなぜですか?
そのデーモンがその識別子を持っていることを期待していて、別のプログラムがそのpidを使用していると混乱する、rsyslogなどの他のプログラムはありますか?
多くのデーモンでは、デーモンの1つのインスタンスのみがシステム上で一度に実行されている必要があります。このユースケースでは、デーモンは通常、デーモンのインスタンスが実行されていることを示すために/run
、そのPIDを既知のディレクトリ(Linuxでは、現在、以前/var/run
)に格納します。
このようなデーモンの2番目のインスタンスを呼び出そうとすると、新しく呼び出されたデーモンは、下にある既存のエントリ(ロックファイルと考えてください)をチェックし、/run
見つかった場合は終了します。
デーモンが再起動されると、新しいインスタンスのPIDがファイルに書き込まれます。新しいインスタンスは独自のPIDを取得します。特定のPIDでプロセスを起動する方法はありません。
PIDファイルは、デーモンを停止するために強制終了するプロセスを決定するためにも使用されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加