매시간 로그를 회전하도록 logrotate를 설정하는 방법은 무엇입니까?

매시간 로그를 회전하도록 logrotate를 설정하는 방법은 무엇입니까?

Unix and Linux Administration Handbook 에 따르면 manlogrotate에는 daily, weekly, options 가 있는데 옵션을 monthly추가하는 방법이 있나요 hourly?

이 블로그 게시물size 1시간 옵션(예: )을 설정 및 제거한 daily다음 수동으로 호출 할 수 있다고 언급했습니다 logrotate. cron다음과 같은 것이 상상됩니다.

logrotate -f /etc/logrotate.d/my-hourly-file

하지만 매시간 로그를 교체하는 더 우아한 솔루션이 있을까요?

답변1

운영 체제에 따라 다릅니다. 일부(모두?) Linux 배포판에는 /etc/cron.hourly매시간 실행되는 cron 작업을 배치할 수 있는 디렉터리가 있습니다 .

다른 것들은 디렉토리를 가지고 있습니다 /etc/cron.d/. 여기에서 crontab 항목에 대한 일반적인 cron 설정을 사용하여 특수 사용자로 실행할 cron 작업을 배치할 수 있습니다(사용자 이름을 지정해야 함).

표준 로그 회전 스크립트 대신 이러한 스크립트를 사용하는 경우 /etc/cron.daily/스크립트를 여기와 cp /dev/null원래 위치에 복사해야 합니다. 그렇지 않으면 logrotate 패치 업데이트를 통해 다시 활성화됩니다.

시간별로 올바르게 회전하려면 dateext다음 명령을 따르십시오.아니요놓다. 그렇다면 기본적으로 첫 번째 회전된 파일에는 YYYYMMDD와 같은 현재 날짜의 확장자가 적용됩니다. 그런 다음 같은 날 두 번째 로그 회전이 활성화되고 size임계값을 초과하더라도 회전을 건너뜁니다.

그 이유는 회전할 파일의 새 이름이 이미 존재하고, logrotate가 기존 이전 파일에 내용을 추가하지 않기 때문입니다. 예를 들어, RHEL 및 CentOS에서 이 dateext지시어의 기본값은 입니다 . 이 줄을 제거하거나 주석 처리한 후 회전된 파일은 해당 값에 도달할 /etc/logrotate.conf때까지 실행 번호를 확장자로 가져옵니다 . rotate이렇게 하면 하루에 여러 번 회전할 수 있습니다.

답변2

Nils의 답변에 추가하기 위해 logrotateDebian 또는 Ubuntu 시스템에서 스크립트 위치를 변경하는 경우 파일을 복사하여 원래 위치에 dpkg-divert복사하는 대신 이것을 사용하는 것이 더 안전할 수 있습니다. 예를 들면 다음과 같습니다./dev/null

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

답변3

또 다른 옵션은 crontab 목록에 logrotate 명령을 추가하는 것입니다. 그러면 매시간 실행됩니다.

crontab -e

crontab 목록에 다음 줄을 추가합니다.

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file

답변4

누구나 이 주제로 돌아올 것입니다. Logrotate에는 이제 시간별 옵션이 있습니다. 기본적으로 매일이기 때문에 logrotate 스크립트를 시간별 크론에 넣어야 합니다. 매일 오전 3시 같은 시간에 2번 실행되므로 일일 크론에서 제거하는 것을 잊지 마세요~. (기본 cron.daily 시간 afai

https://github.com/logrotate/logrotate

관련 정보