1MB 파일을 녹음하는 방법은 무엇입니까?

1MB 파일을 녹음하는 방법은 무엇입니까?

로그 크기가 증가한 후 로그를 회전하기 위해 다음과 같이 1Mcronjob이 15분마다 호출됩니다.logrotate

0,15,30,45 * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf

syslog-ng-rotate.conf어디

/app/syslog-ng/custom/output/all_devices.log {
size 1M
copytruncate
dateext
dateformat -%Y%m%d-%s
rotate 365
sharedscripts
compress
postrotate
     /app/syslog-ng/sbin/syslog-ng-ctl reload
endscript
}

1M하지만 파일 크기가 15분 이내이면 위 구성이 작동하지 않습니다.

파일 크기에 도달하자마자 파일이 회전되도록 하려면 어떻게 해야 합니까 1M?

답변1

logrotate는 실행하라고 지시한 경우에만 실행됩니다. 로그 파일이 빠르게 증가할 가능성이 있고 cron을 사용하는 경우 다음 두 가지 제안 사항이 있습니다.

  1. 크론 작업을 더 자주(예: 1분마다) 예약합니다.

    * * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
    

    이렇게 하면 크기 제한에 도달하기 전에 로그 파일이 커지는 데 최대 60초가 소요됩니다.

  2. 로그 파일이 여전히 분당 너무 빠르게 증가하는 경우 logrotate를 분당 여러 번 실행하고 다음 단계를 실행하십시오.

    * * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
    

    (예를 들어) 또는:

    * * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
    

    ...logrotate 호출 사이에 10초.노트단일 크론 작업이 60초 이상 걸리는 것을 원하지 않습니다. 그렇지 않으면 다음 크론 작업과 겹치게 됩니다. 전체 cron 작업을 다음으로 래핑하는 것을 고려하십시오 timeout.

    * * * * * timeout 59 sh -c "/usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf"
    

사용자 환경에 맞게 logrotate를 호출하려고 시도하는 시기와 횟수를 로그 파일을 제어해야 합니다.

관련 정보