ほとんどの場合モジュールのデーモンは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の代わりを果たしている。
以上
コメント