logrotate는 내 로그를 자동으로 회전시키지 않습니다.


9

나는 두 개의 다른 (i386 v AMD) 데비안 박스를 가지고 있으며 같은 문제가 있습니다. logrotate는 내 로그를 자동으로 회전시키지 않습니다. 수동으로 강제로 작동하면 제대로 작동합니다.

/usr/sbin/logrotate -f /etc/logrotate.conf

그러나 그것은 나에게 좋지 않습니다.

설정이 수정되지 않았습니다 (적어도 수정하지 않았습니다). AMD 상자는 새로 설치되었지만 아직 작동하지 않습니다.

비슷한 문제가 발견되면 도와주세요.

업데이트 (일부 서버 출력) :

logrotate -d http://pastebin.com/e6AshtGq

ls -l /var/log http://pastebin.com/Y2A4Li59

cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr

ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM


어떤 종류의 오류가 있습니까? "include /etc/logrotate.d"에 주석이 없는지 확인하십시오.
Torian

1
로그가 회전하지 않는지 어떻게 알 수 있습니까? 오류? 30 일 후에 발생하지 않습니까? 이 상자들이 항상 올라와 있습니까? cron에서 logrotate가 예약되어 있습니까?
EightBitTony

"include /etc/logrotate.d"가 두 시스템 모두에 있는지 확인할 수 있습니다. syslog에 흥미로운 항목을 제외한 오류는 ...rsyslogd was HUPed...없습니다.
fabrik

@EightBitTony 이들은 서버이므로 지속적으로 작동합니다. 설정은 기본 설정 (logrotate 구성은 나에 의해 수정되지 않았습니다)이며, 일반적인 항목 만 설치됩니다. logrotate가 포함되어 cron.daily있지만 회전은 일어나지 않습니다.
fabrik

@Fabrik 질문에 logrotate -d /etc/logrotate.conf 출력을 추가하십시오
EightBitTony

답변:


8

crot에 의해 logrotate가 실행되고 있는지 확인하십시오.

편집하다:

주석 토론에서-cron이 올바르게 작동하지 않는 것 같습니다. 사용자없이 crontab에 cronjob이 있었지만 cron 데몬을 다시 시작했을 때만 나타납니다.

내 우분투 및 centos 시스템에는 /etc/cron.daily/logrotate내용 이있는 파일이 있습니다.

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

내 / etc / crontab에는 매일 작업을 실행하는 다음 줄이 있습니다.

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily 

이것은 내 것이 작동하지 않는다는 사실을 제외하고는 완전히 내 설정과 같습니다. (
fabrik

cron이 출력을 확인 ps -ef | grep cron| grep -v grep합니까? /etc/cron.daily/logrotate의 시작 부분에 에코를 추가하여 echo "logrotate runing" >>/tmp/logrotate.out생성되는지 확인하십시오.
user9517

내 crontab에 문제가있는 것 같습니다. cron작동하고 있지만 매일 logrotate 작업을 실행하지 않습니다. /etc/cron.daily/logrotate수동으로 실행하면 로그가 회전하고 /tmp/logrotate.out기록됩니다.
fabrik

내일까지 일일 업무가 다시 실행되지 않는다는 것을 잊지 마십시오!
user9517

물론 어제 수정 /etc/cron.daily/logrotate했으므로 -f오늘 아침 내 로그가 회전하지 않도록 강제로 회전시키는 매개 변수를 추가했습니다 .
fabrik

10

나는 비슷한 문제가 있었지만 crontab작동하고 있었고 일부 로그 디렉토리 logrotate는 작동했지만 일부는 작동 하지 않았습니다. logrotate를 수동으로 실행하려고 할 때 몇 가지 오류 메시지가 나타납니다.

user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/apache2/access.log.1.gz: File exists
error: error creating output file /var/log/apache2/error.log.1.gz: File exists
...

모든 *.1.gz파일의 크기는 0이었습니다. 오류 메시지에 언급 된 모든 파일을 수동으로 삭제하고 sudo /usr/sbin/logrotate -f /etc/logrotate.conf다시 실행 한 후 작동했습니다.

이 대체 솔루션을 여기에서도 공유해야하지만 문제를 검색 할 때 나에게 처음으로 나타난 검색 결과 였지만 제안 된 솔루션이 효과가 없었기 때문입니다. 어쩌면 이것은 나와 같은 상황에 처한 다른 사람들에게도 도움이 될 것입니다.


감사합니다.이 문제도있었습니다. 모든 1.gz 파일을 삭제하고 마침내 작동을 재개했습니다. 정말 끔찍한 코드입니다.
Florian Heigl

2

내가 알지. 5 살짜리 실.

검색에서 여전히 여전히 높은 것으로 생각되면, 내가 직면 한 문제에 대한 해결책을 제시하고 제공 할 것입니다. 내 서버 중 하나에서 로그 로테이션 작업이 자동으로 처리되지 않았습니다. 회전 강제로 잘 작동했습니다. 일일 회전 명령을 수동으로 실행 한 후 해결책을 찾았습니다.

( cd / && run-parts --report /etc/cron.daily )

그런 다음 logrorate 작업이 시작되지 않는 오류를 보았습니다.

/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log

예, 그렇게 간단합니다. 회전 할 동일한 로그를 정의하는 두 개의 파일 (iptraf 및 iptraf-ng)이 있습니다. iptraf에 대해 상충되는 logrotate 정의 중 하나를 제거하는 것이 트릭이었습니다.

rm /etc/logrotate.d/iptraf

다른 문제는 botched / etc / crontab 파일 일 수 있습니다. 구문이 잘못된 경우 찾을 수있는 출력을 제공하지 않으므로 해당 파일의 구문을 이중 또는 삼중으로 확인하십시오. 구문 유효성 검사에 실패한 후 자동으로 종료됩니다.

이것이 누군가를 구하기를 바랍니다.


1

좋아, 비슷한 문제가 있었다.

"로그가 회전하지 않습니까?" 그러나 logrotate를 수동으로 실행하면 (또는 실행하면 /etc/cron.daily정상적으로 회전합니다.

따라서 cron은 매일 "실행되고 있지 않습니다". 이상한. 그래서 cron 이 데이터를 출력 하는 로그 파일을 살펴보고 해당 문제를 해결하기 위해 "인증 토큰이 더 이상 유효하지 않습니다. 새로운 토큰이 필요합니다"를 보았습니다. 여기를 참조 하십시오.


1

서비스가 변경되고 logrotate에 사용 된 옵션이 수정되어 매일 logrotate가 실패하는 경우가 자주 발생합니다.

아이디어를주기 위해 마지막 수정 사항 은 아파치 logrotate 파일 의 notifyempty 옵션이 더 이상 유효하지 않아서 logrotate가 함께 중지되도록했습니다.

이것에 대해 어느 정도 다루었지만이 문제를 추적 할 때 거쳐야하는 프로세스를 공유하고 싶습니다.

  1. #/usr/sbin/logrotate -f /etc/logrotate.conf오류를 찾기 위해 시작하여 시작하십시오 (예 : postfix : 3 'missingok'). 참조
    하는 파일과 줄 번호는 logrotate.d 폴더의 파일입니다.
  2. 문제의 파일 :을 편집하고 # vi /etc/logrotate.d/postfix문제를 일으키는 옵션을 제거하고 파일을 저장하십시오.
  3. 회전이 작동하는지 또는 다른 문제가 있는지 확인하려면 첫 번째 단계를 반복하십시오.

첫 번째 단계에서 단순히 출력하는 경우가 있지만 문제가 있음을 알고 있습니다. 서비스의 로그 파일이 회전되지 않았기 때문에이 모든 것이 시작되었으므로 로그 회전 프로세스가 특정 서비스를 찾는 과정에서 회전이 중지되는 것을 확인할 수 있습니다. 이를 수행하려면 logrotate 명령에 verbose 태그를 추가하고 해당 폴더에서 어떤 일이 발생하는지 확인하십시오.


1

충돌하는 로테이션 구성 매개 변수를 점검하십시오 !!

나는이 문제로 어려움을 겪고 마침내 logrotate에 대한 문서를 매우 자세히 읽었으며 여기에서 유용한 문서를 발견 했습니다 .

사실 둘 다 원하지 않을 때 Size 매개 변수와 Rotation Interval 매개 변수를 모두 지정 했습니다. 나는 cron에서 예약되었을 때 회전이 정확히 일어나기를 원했습니다.

  1. 크기 매개 변수는 회전 간격을 무시합니다. 따라서 내 로그는 회전하기 전에이 매개 변수를 초과해야했습니다. (디스크 사용에 대해 가장 걱정할 때 이것이 어떻게 유용한 지 알 수 있습니다. 그러나 사용하고 싶지는 않습니다.)
  2. 회전 간격 은 마지막 회전이 발생한시기를 확인하고 다음 회전이 지정된 양만큼 지연되는지 확인합니다. 그러나 그 시간이 언제 발생하는지 제어하는 ​​방법이 확실하지 않습니다.

따라서 회전 간격크기 매개 변수를 제거하십시오 . 그러면 logrotate가 강제로 호출되지 않고 호출 될 때마다 회전이 발생합니다.

편집 : OK 이것도 완전히 작동하지는 않습니다! 로그 파일이 특정 임계 값 미만이면 로그가 회전하지 않습니다. 따라서 2 분마다 회전하는 크론 작업을 실행하면 로그가 회전하지 않았습니다.

실행하면 자세한 디버그 정보를 볼 수 있습니다 logrotate -d. 이것은 매우 유용한 디버그 정보를 제공합니다.

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