Kozupon.com    
 
 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の代わりを果たしている。

以上


 
 
 



Copyright 2005 Kozupon.com.