apacheを再起動しないでlogrotateを実行する。

通常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

数回試しても問題ないようです。

おしまい

タグ , . ブックマークする パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です