logrorate 에서 파일이동시에 write daemon 의 FD 파일이 바뀌는 현상이 있습니다.
글쓴이: trymp / 작성시간: 월, 2013/02/04 - 9:24오후
log 를 write 하는 daemon 이 있다고 가정합니다.
fopen() -> fwrite() 을 이용해서..
이렇게 지속적으로 로그를 쌓고 있을 때 logrotate 를 이용해서 5M 단위로 ..
logA.1 logA.2 ... 이런식으로 파일을 size별로 나눌 때,
간혹가다가 보면 write 하는 daemon 이 logA 에 다가 쌓아야 하는데,
logA.1 에다가 파일을 쌓고 있습니다.
lsof 로 보니 write 하는 데몬의 FD 가 logA 를 가르키지 않고 logA.1 을 가르키더군요.
어떻게 이런일이 가능하죠???
고수님들의 의견 부탁드려요..
Forums:
fopen() 은 처음 한번만 합니다...
..
open을 하고 한번만 계속 사용하기 때문에
open을 하고 한번만 계속 사용하기 때문에 파일디스크립터는 동일한 파일개체와 연결이 되어 있습니다. 이 파일개체의 이름이 바뀐것일뿐, 파일디스크립터에는 영향을 주지 않죠. 여러방법이 있겠지만 제일 간단하게는, logrotate에 copytruncate옵션을 사용하면 되겠습니다.
댓글 달기