Unix and Linux Administration Handbook 에 따르면 man
logrotate에는 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의 답변에 추가하기 위해 logrotate
Debian 또는 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