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
로그 회전은 하루에 여러 번, 한 시간에 한 번씩 시작해야 합니다. 실제로 로그를 회전할지 여부에 대한 결정 logrotate
은 cron
.
24시간마다 호출되면 logrotate
다음과 같은 일이 발생할 수 있습니다.
cron
로그 순환 작업 시작엑스(한 번).logrotate
시작하고 회전할 로그 목록을 살펴보고 다음으로 끝납니다.엑스+N(N몇 초 후).
24시간 후:
cron
로그 순환 작업 시작예(엑스+24시간).logrotate
, 초에 관심이 있는 경우 마지막 로그 회전에서 회전된 로그가 완전히 24시간이 지나지 않았음을 알 수 있습니다(1 ~N초 차이) 건너뛰세요.