2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

PIDをはき出さないデーモンのログローティションファイルの書き方!

ほとんどの場合モジュールのデーモンはPIDファイルにプロセス番号を記録する。
/var/runディレクトリにモジュール名でPIDファイルが作られる。
そこに記録されるわけだが、まれにPIDファイルに記録しないモジュールもある。その場合のlogrotateファイルの書き方を説明してみたい。本来そういう場合は、基本的に起動スクリプトのリロードを使うのだが、PIDを記録しないと言うことは起動ファイルにはstartとstopしかない場合がある。そういう場合を考慮した説明をしてみたい。


通常、PIDファイルを利用する場合は、

# cd /etc/logrotate.d

# cat apache

/usr/local/apache/logs/access_log {
missingok
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null
endscript
}

/usr/local/apache/logs/error_log {
missingok
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null
endscript
}

このように、killコマンドを使ってPIDファイルをめいっぱい利用している。

さて、それではPIDファイルが無いものについては、例えば、

# cat stone

/var/log/stone.log {
rotate 10
monthly
compress
copytruncate
missingok
postrotate
/etc/init.d/myinit.stone-ssl stop > /dev/null
/bin/sleep 3
/etc/init.d/myinit.stone-ssl start > /dev/null

endscript
}

こんな風に作ってみた。これで旨くいった。濃い青字のところがみそ。起動スクリプトを利用してPIDの代わりを果たしている。

以上

コメント