httpdのerror_logに[notice] SIGHUP received. Attempting to restart と出たので対処

ふとhttpd のerror_log を確認すると

[Sun May 24 03:58:56 2015] [notice] SIGHUP received. Attempting to restart

と出ている。なんだこれは?
ちょうどcron.daily が logrotate 実行している時、要するにログファイルが切り替わったタイミングの最後にこの記述があった。
notice なので大したことないんだろうけど気になる。Apache がなぜか 再起動 しているのも気持ち悪し。

調べてみた...。
タイミング的に logrotate が怪しいので、どういう設定になっているか確認した。

# vi /etc/logrotate.d/httpd

で設定を確認してみると。以下のような記述になっていた。

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
      /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

あー、postrotate ~ endscript の間でたしかに、httpd reload ってしてます。
logrotate がそういう設定になっていたので、いうなれば正常動作なんですが、一瞬でもApacheが再起動したら、ユーザー側がなにかダウンロードしていたら途切れてしまうことになるので、これはやめてほしい。
なので、以下のようにpostrotate ~ endscript の間をコメントアウトして、ハイライト部分を追加修正した。

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    weekly
    rotate 4
    copytruncate
#    postrotate
#      /sbin/service httpd reload > /dev/null 2>/dev/null || true
#    endscript
}

ちなみに追加したlogrotate オプションの意味は以下のとおり
weekly - 週単位でログを置き換える。毎日はdaily、毎月はmonthly
rotate 4 - ログを何世代残すかの設定 これは4世代残すという意味。
copytruncate - Apacheを再起動しなくてもログをローテーションさせる方法。だがロストが生じる可能性という欠点があるらしい...。

参考:apacheのログローテション時にapacheをリロードまたは再起動させない