mysqlの一般ログを開いてみましたが、すごく早く成長しているようで毎日logrotateを使うかと思って昨日午後2時頃にログを生成しましたがログはこうです。
-rw-rw---- 1 mysql adm 1751348 Jun 16 11:55 general.log
次のようにlogrotateに新しいルールを追加しました。
/var/log/mysql/general.log {
daily
rotate 12
dateext
compress
missingok
notifempty
create 640 mysql adm
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
/etc/crontabによると、午前6時25分に実行中でしたが、昨日は私のログを回転させませんでした。
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
logrotate --dry-run 実行結果:
logrotate -d general
reading config file general
reading config info for /var/log/mysql/general.log
Handling 1 logs
rotating pattern: /var/log/mysql/general.log after 1 days (12 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/general.log
log does not need rotating
not running postrotate script, since no logs were rotated
ログを交換するにはどうすればよいですか?
答え1
ログの回転は1日に数回、1時間に1回開始する必要があります。実際にログを回転させるかどうかについての決定logrotate
はcron
。
24時間ごとに呼び出されると、logrotate
次のことが発生する可能性があります。
cron
ログ循環ジョブの開始X(一度)。logrotate
開始して回転するログのリストを見て、次に終了します。X+N(N数秒後)。
24時間後:
cron
ログ循環ジョブの開始はい(X+24時間)。logrotate
、秒に興味がある場合は、最後のログ回転で回転したログが完全に24時間を超えていないことがわかります(1〜N秒差)スキップしてください。