로그를 매시간 회전하도록 logrotate를 설정하려면 어떻게해야합니까?


23

하여 유닉스와 리눅스 관리 수첩을 따라와 man에, logrotate에이 옵션을 daily, weekly그리고 monthly추가하는 방법이 있지만,이 hourly옵션은?

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

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

그러나 매시간 로그를 회전시키는 더 우아한 솔루션이 있습니까?


확실한. 운영 체제는 무엇이며 어떤 버전입니까?
Nils

우분투 10.04 및 11
cwd

답변:


20

OS에 따라 다릅니다. 일부 Linux 배포판에는 /etc/cron.hourly매시간마다 cron 작업을 실행할 수 있는 디렉토리 가 있습니다.

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

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

시간별 적절한 회전을 위해서는 dateext지시어가 설정 되지 않도록 주의하십시오 . 그렇다면 기본적으로 첫 번째 회전 된 파일은 YYYYMMDD와 같은 현재 날짜의 확장자를 갖습니다. 그런 다음 두 번째 logrotate가 같은 날에 활성화되면 size임계 값을 초과 하더라도 회전을 건너 뜁니다 .

그 이유는 회전 할 파일의 새 이름이 이미 존재하고 logrotate가 기존의 기존 파일에 내용을 추가하지 않기 때문입니다. 예를 들어 RHEL 및 CentOS의 경우 dateext지시문은 기본적으로에 제공됩니다 /etc/logrotate.conf. 해당 줄을 제거하거나 주석을 달면 회전 된 파일은 rotate값 에 도달 할 때까지 확장 번호로 실행 번호를 얻습니다 . 이런 식으로 하루에 여러 번 회전 할 수 있습니다.


5

닐스 답변에 추가하기 logrotate위해 데비안 또는 우분투 상자 에서 스크립트 위치를 변경 dpkg-divert하면 파일을 복사하고 복사 하는 대신 사용하는 것이 더 안전합니다./dev/null 하고 원래 위치로 .

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

나는 이것에 대해 몰랐고 수년간 우분투를 사용해 왔습니다. 고맙습니다. :)
Vaughany

2

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

crontab -e

crontab 목록에 아래 행을 추가하십시오.

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.