logrotate를 사용하여 파일만 삭제

logrotate를 사용하여 파일만 삭제

매시간 자체 로그 파일을 회전시키는 애플리케이션이 있습니다. 매시간 n며칠이 지난 모든 파일을 삭제하고 싶습니다 . logrotate사업 정책 때문에 이렇게 해야 했습니다.

logrotate그렇다면 매 시간마다 이 명령을 실행하는 것과 동일한 것은 무엇일까요?

find /var/log/app -name "*.old" -mtime +1 -exec rm -f {} \;

답변1

logrotate하루에 한 번 실행됩니다. 스크립트는 여기 /etc/cron.daily/logrotate(CentOS 7)에서 찾을 수 있습니다. 매시간 실행하려면 먼저 로 이동해야 합니다 /etc/cron.hourly/. 따라서 위 명령의 경우 해당 logrotate스크립트는 다음과 같습니다.

$ cat /etc/logrotate.d/app

/var/log/app/*.old {
  hourly
  rotate 0
  firstaction
    /usr/bin/find /var/log/app/ -name "*.old" -mtime +1 -delete
  endscript
  nocreate
  missingok
  notifempty
}

답변2

테스트해야 할 가능성은 다음과 같습니다.

cat /etc/logrotate.d/customapp

/var/log/app/*.old {
    daily
    missingok
    rotate 0
    notifempty
}

왜 0을 회전합니까?

개수가 0이면 이전 버전이 회전되지 않고 삭제됩니다. (출처 : 남자)

관련 정보