Linux에서 로그 파일 정리

Linux에서 로그 파일 정리

커널 모듈의 일부 기능을 테스트하기 위해 kvm ubuntu 10.04 가상 머신을 사용하고 있습니다. /var/log모듈에 대한 커널 메시지를 관찰하기 위해 이러한 파일을 살펴봅니다 .

깨끗한 상태에서 시작하기 위해 rm -rf /var/log/*가상 머신을 실행한 후 다시 시작하여 이전 메시지가 포함된 로그 파일을 삭제했습니다. 그러나 다시 시작한 후에도 새 로그 파일에는 여전히 이전 로그 메시지가 포함되어 있습니다. 결국 이러한 로그 파일 메시지를 제거하려면 약 5~6주기의 파일 삭제 및 가상 머신 재시작이 필요합니다.

왜 이런 일이 발생합니까? 로그 파일을 정리하는 더 쉬운 방법이 있습니까?

답변1

오래된 로그를 정리하는 가장 쉬운 방법은 삭제하지 않는 것입니다.

로그를 정리하는 가장 좋은 방법은 logrotateHanan N.이 지적한 대로입니다.

find /var/log -type f -exec /bin/cp /dev/null {} \;

각 로그 파일에 대해. 마지막 부팅 시 어떤 로그 항목을 참조하고 있는지 잘 모르겠지만 부팅 후 해당 로그 항목을 지우려면 위 명령을 /etc/rc.local스크립트에 넣어 부팅 후 모든 로깅이 발생하도록 할 수 있습니다.

일반적으로 로그는 모든 문제 해결의 시작점이므로 지우고 싶지 않습니다.

답변2

현재 수행 중인 작업에 대해서는 커널 메시지에 대한 추가 로그 파일을 추가하는 것이 가장 좋습니다. 일부 로깅 데몬을 사용하면 기록 중인 레코드에 대해 일치를 수행하여 파일에서 적절한 레코드만 얻을 수 있습니다. 그런 다음 실행 간에 파일을 회전하거나 삭제하거나 이름을 바꿀 수 있습니다. (재부팅하지 않고 로그 데몬에 HUP 신호를 보내 파일을 다시 열어야 할 수도 있습니다.

로그에서 새 레코드만 추출할 수 있는 도구도 있습니다. 패키지 logtail의 유틸리티 는 logcheck그러한 유틸리티 중 하나입니다. 대체 오프셋 파일을 사용하여 실행할 수 있습니다.

패턴과 일치하는 기록에 대한 로그를 모니터링하고 이를 보고하는 다른 도구가 있습니다. 이 중 하나가 당신에게 도움이 될 수 있습니다.

답변3

로그를 회전하여 로그를 정리한 다음 이전 로그 항목을 삭제하면 제대로 작동하는 것 같습니다(Ubuntu LTS 14.04에서). cp /dev/null 방법과 비슷하지만 더 깔끔한 것 같아요. ymmv

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;

관련 정보