Ubuntu 14.04에서 logrotate에 문제가 있습니다. 내 로그 파일이 올바르게 순환되지 않습니다. 현재는 mylog.log의 이름을 mylog.log.1로 변경하고 있지만 계속해서 mylog.log 대신 mylog.log.1 파일을 사용하여 메시지를 기록합니다.
어떤 조건에서 이런 일이 발생합니까?
답변1
이 로그 파일을 작성하는 데몬을 다시 시작하거나 HUP하세요. logrotate 맨페이지 postrotate
및 를 참조하세요 prerotate
.
답변2
postrotate
Ipor의 답변에 따라 /HUP 프로그램을 다시 시작하려면 이 명령을 사용해야 합니다.
기술적 이유에 대한 간단한 설명: 프로그램이 inode에 잠겨 있고 mylog.log
logrotate가 로그 파일을 이동할 때 프로그램은 여전히 동일한 inode에 쓰고 있습니다. inode는 파일 이름을 포함하거나 신경 쓰지 않습니다. 따라서 프로그램을 다시 시작하면 더 이상 이전 inode를 사용하지 않고 새 파일에 로깅을 시작합니다.