logrotateの-HUPを終了するための正しいpidを見つけてください。

logrotateの-HUPを終了するための正しいpidを見つけてください。

私はlogrotate構成を学んでいます。そこで、コマンドのマニュアルページを読んで、特定のアプリケーションログのlogrotate設定を見てみましたが、以下のコードスニペットは引き続き表示されます。 (Centos 6.8以下環境)

postrotate
   /bin/kill -HUP `cat /var/run/XXX.pid 2>/dev/null` 2> /dev/null || true
endscript

またはそのようなもの。私の質問は、必要なプロセス(kill -HUPまたはで見つからないプロセス)が利用できない場合、プロセスがファイルの書き込みを続行するのをどのように停止しますか?プロセスを終了する方法を知っていますが、ファイルへの書き込みを中止するか、上記の例のようにファイル記述子を再度読み取るようにしたいと思います。それとも、少なくともそうすると思います。kill --helpman killman signal/var/run/xx.pid

答え1

/var/runどのPIDを削除する必要があるかを知ることは、pidファイルをその中に(または/run/user/$UID自分のユーザーアカウントで管理されているプロセスに)置くのに重要です。プロセスがそのファイルに書き込まれない場合は、そうするように構成するか(可能な場合)、パスする必要があります。家庭教師pidファイルを生成します。

最後の手段として、ログファイルが開いているプロセスを確認できます。fuser、またはこれらのプロセスを直接終了することもできます(これにより、-wファイルを書き込んでいるプロセスのみを終了するオプションを忘れないでください)。

ps $(fuser /path/to/log/file 2>/dev/null)
fuser -w -k -HUP /path/to/log/file

関連情報