• ベストアンサー

ログローテート

今まであまり意識しなかったんですが、ふと疑問に思ったので教えてください。 今までアプリケーションログをローテートする場合に、以下のようなスクリプトを書いていました。 cp -p log log.old・・・(1) cp /dev/null log・・・(2) でもこれって(1)と(2)の間でlogに書き込みがあるとその箇所が消されてしまうんじゃないか?と思いますがこの認識は合っていますでしょうか? また、linuxのlogrotateは書き込み中であっても欠落なくローテートされることが保証されているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

その認識であってます。 ログのローテートはcpじゃなくてmvを使う必要があります。標準のlogrotateはmvを使っています。 ただ、mvしても元のファイルに書き続けるので、kill -HUP プロセス番号 とか、/etc/init.d/サービス名 reload とかして、新しいログファイルに書くようにします。当然、アプリケーション側でSIGHUPを受け取るとログファイルをクローズしてオープンしなおす機能が必要です。もしくは再起動するか。

yyywww
質問者

お礼

notnotさん、ご回答ありがとうございます。 また、返信遅れましてすみませんでした。 mvとkill -HUPの間の書き込みはどうなるのかな?とも思いますが、 ここまで回答いただいたので後は自分で試してみます。 どうもありがとうございました。

関連するQ&A