리눅스에서 로그 파일 정리 실행 한 다음

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

정리 된 상태에서 시작하려면 rm -rf /var/log/*가상 컴퓨터를 실행 한 다음 다시 부팅하여 이전 메시지가 포함 된 로그 파일을 제거 합니다. 그러나 재부팅 한 후에도 새 로그 파일에는 여전히 이전 로그 메시지가 포함됩니다. 파일을 삭제하고 가상 머신을 재부팅하여 로그 파일 메시지를 제거하는 데 약 5-6주기가 소요됩니다.

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



답변

이전 로그를 정리하는 가장 쉬운 방법은 제거하지 않는 것입니다.

로그를 정리하는 가장 좋은 방법 logrotate은 Hanan N. 지적했거나 다음과 같습니다.

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

각 로그 파일에 대해 이전 부팅에서 어떤 로그 항목을 참조하는지 확실하지 않지만 부팅 후이 항목을 지우려면 위의 명령을 /etc/rc.local스크립트에 넣을 수 있으므로 모든 로깅은 부팅 후입니다.

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


답변

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

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

패턴과 일치하는 레코드의 로그를보고보고하는 다른 도구가 있습니다. 이 중 하나가 당신에게 잘 작동 할 수 있습니다.


답변

로그를 정리 로그로 회전 한 다음 이전 로그 항목을 삭제하면 우분투 LTS 14.04에서 제대로 작동하는 것으로 보입니다. 그것은 cp / dev / null 메소드와 비슷하지만 더 깨끗하다고 ​​생각합니다. ymmv

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


답변