로그회전은 어떻게 작동하나요?

로그회전은 어떻게 작동하나요?

logrotate로 자주 회전하는 로그 파일을 모니터링하려고 합니다. 하지만 나는 그것을 정확하게 얻을 수 없습니다. 실제로 logrotate가 어떻게 작동하는지 설명할 수 있는 사람이 있나요?

파일 이름이 바뀌고 새 파일이 생성됩니까?

아니면 파일이 새 이름으로 복사되고 현재 파일이 비어 있습니까?

회전 전:

131887 -rw-r--r-- 1 root root  11385 Sep 25 03:40 /var/log/sas.log

회전 후:

131887 -rw-r--r-- 1 root root  0 Sep 25 04:40 /var/log/sas.log

131911 -rw-r--r-- 1 root root   11385 Sep  25 04:40 /var/log/sas.log.1

답변1

구성 파일에서 자르기 옵션이 활성화되면 파일은 이동되지 않습니다. 해당 내용은 새로 생성된 다른 파일에만 복사되고 현재 파일은 지워지므로 inode ID는 변경되지 않습니다. 실제로 파일은 변경되지 않습니다.

답변2

회전 시 현재 로그 파일이 이동되고 지정된 경우 압축될 수도 있습니다. 그러면 새로 생성됩니다. [내 경험이 아닌 다른 출처를 찾고 있습니다]

이는 회전 시 로그 파일이 열려 있는 서비스가 실행 중인 경우 문제가 됩니다. 파일 링크는 해제되지만 파일이 여전히 열려 있기 때문에 디스크 공간이 실제로 확보되지는 않습니다.

그렇기 때문에 서비스는 종종 회전을 처리하는 보다 정교한 logrotate 스크립트를 설치합니다. 예를 들어 웹 서버 /etc/logrotate.d/nginx의 회전 동작을 정의하는 방법을 살펴보십시오 nginx.

[....]
postrotate
    invoke-rc.d nginx rotate >/dev/null 2>&1
endscript

postrotate새 로그 파일이 생성된 후 블록이 실행됩니다 . rotate서비스에 다음을 지시 하여 nginx의 서비스 스크립트를 호출합니다.로그 파일을 다시 엽니다.

관련 정보