내 사용자 정의 로그에서 logrotate가 예상대로 작동하지 않습니다.

내 사용자 정의 로그에서 logrotate가 예상대로 작동하지 않습니다.

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

로그 회전은 하루에 여러 번, 한 시간에 한 번씩 시작해야 합니다. 실제로 로그를 회전할지 여부에 대한 결정 logrotatecron.

24시간마다 호출되면 logrotate다음과 같은 일이 발생할 수 있습니다.

  • cron로그 순환 작업 시작엑스(한 번).
  • logrotate시작하고 회전할 로그 목록을 살펴보고 다음으로 끝납니다.엑스+N(N몇 초 후).

24시간 후:

  • cron로그 순환 작업 시작(엑스+24시간).
  • logrotate, 초에 관심이 있는 경우 마지막 로그 회전에서 회전된 로그가 완전히 24시간이 지나지 않았음을 알 수 있습니다(1 ~N초 차이) 건너뛰세요.

관련 정보