logrotate는 원본 파일의 이름을 mylog.log.1로 바꾸지만 mylog.log를 사용하지 않습니다.

logrotate는 원본 파일의 이름을 mylog.log.1로 바꾸지만 mylog.log를 사용하지 않습니다.

Ubuntu 14.04에서 logrotate에 문제가 있습니다. 내 로그 파일이 올바르게 순환되지 않습니다. 현재는 mylog.log의 이름을 mylog.log.1로 변경하고 있지만 계속해서 mylog.log 대신 mylog.log.1 파일을 사용하여 메시지를 기록합니다.

어떤 조건에서 이런 일이 발생합니까?

답변1

이 로그 파일을 작성하는 데몬을 다시 시작하거나 HUP하세요. logrotate 맨페이지 postrotate및 를 참조하세요 prerotate.

답변2

postrotateIpor의 답변에 따라 /HUP 프로그램을 다시 시작하려면 이 명령을 사용해야 합니다.

기술적 이유에 대한 간단한 설명: 프로그램이 inode에 잠겨 있고 mylog.loglogrotate가 로그 파일을 이동할 때 프로그램은 여전히 ​​동일한 inode에 쓰고 있습니다. inode는 파일 이름을 포함하거나 신경 쓰지 않습니다. 따라서 프로그램을 다시 시작하면 더 이상 이전 inode를 사용하지 않고 새 파일에 로깅을 시작합니다.

관련 정보