logrotate で copytruncate 使うなら要 O_APPEND (つまりは >>)

初めて logrotate の copytruncate を使ってみていますが、ローテートされた後のログファイルの先頭が \0 で埋められて困ったことになりました。もしかしてスパースなファイルができている…?

Bug 190468 - copytruncate not truncating (Status: CLOSED NOTABUG)
https://bugzilla.redhat.com/show_bug.cgi?id=190468

あー、どこかで見た…

正しいデバッグ用ログの吐き方 - 射撃しつつ前転
http://d.hatena.ne.jp/tkng/20090716/1247770292

問題のサーバーのログは

/some/process > log 2>&1 &

で出されたものだったのですが、具体的に O_APPEND を使うようにするには

/some/process >> log 2>&1 &

とすればよさげでした。