通常apacheのlogroteスクリプトは↓の様になっており
# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
missingok
compress
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
ログの切り替えの為にapacheの再起動・reloadが行われて一度プロセスが落ちてしまいます。
プロセスを落とさないでlogrotateを行う為には何か方法が無いものか見て見ると
logrptateのmanにかいて有りました。
copytruncateというオプションを使用するようです。
manが言うには、現行のログファイルをコピーしてrotateを行い
書き込み中のlogファイルに永続的に記録を続ける見たいですね。
copytruncateオプションを入れて書いた httpdのlogrotateの設定が↓
/var/log/httpd/access_log /var/log/httpd/error_log {
daily
compress
missingok
rotate 60
notifempty
sharedscripts
copytruncate
}
logrotate -dv /etc/logrotate.d/httpd
でテスト実行して記述に問題が無い事を確認したら
ログをtailしつつ対象サーバーにF5連打でログを記録しながら強制logrotate
logrotate -f /etc/logrotate.d/httpd
数回試しても問題ないようです。
おしまい