- ベストアンサー
ログローテート
今まであまり意識しなかったんですが、ふと疑問に思ったので教えてください。 今までアプリケーションログをローテートする場合に、以下のようなスクリプトを書いていました。 cp -p log log.old・・・(1) cp /dev/null log・・・(2) でもこれって(1)と(2)の間でlogに書き込みがあるとその箇所が消されてしまうんじゃないか?と思いますがこの認識は合っていますでしょうか? また、linuxのlogrotateは書き込み中であっても欠落なくローテートされることが保証されているのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
その認識であってます。 ログのローテートはcpじゃなくてmvを使う必要があります。標準のlogrotateはmvを使っています。 ただ、mvしても元のファイルに書き続けるので、kill -HUP プロセス番号 とか、/etc/init.d/サービス名 reload とかして、新しいログファイルに書くようにします。当然、アプリケーション側でSIGHUPを受け取るとログファイルをクローズしてオープンしなおす機能が必要です。もしくは再起動するか。
お礼
notnotさん、ご回答ありがとうございます。 また、返信遅れましてすみませんでした。 mvとkill -HUPの間の書き込みはどうなるのかな?とも思いますが、 ここまで回答いただいたので後は自分で試してみます。 どうもありがとうございました。