뭐 어떻게 보면 굳이 문제랄 것까지는 없는 부분입니다만, LOG파일 분석할 때 가장 최근 내용이 때로는 무슨 내용이 있어야 분석하고 말고 할꺼 아니겠어요.
열심히 스크립트를 작성하고, 꼼꼼하게 로그파일까지 만들어지게 해두었는 데 막상 tail -f 'FILENAME' 신공으로 로그파일을 좀 보려니, 왠걸 아무것도 들어있지 않는 경우가 발생합니다. 한참을 뒤적거리다가 펄 자체의 버퍼링이 관련이 있다는 것을 발견했습니다.
Suffering from Buffering?
요는, 펄 자체에서 좀 더 효율적으로 메모리 관리를 하기 위해서 바로 바로 쏟아내는 게 아니라 버퍼링 시켜서 조금 모아뒀다가 한번에 쏟아낸다고 하네요. (쏟아낸다는 표현이 껄끄럽긴 하지만)
자세한 내용은 위 사이트를 보시면 되겠고, 다른 건 다 귀찮고 그냥 방법만 알면 된다 하시는 분은 사이트에서 Flushing on Command 항목을 보시면 되겠네요. 표현이 조금 우습지만, 파일 핸들러를 뜨겁게 만들어서 버퍼를 바로 토해내게(!!) 만드는 겁니다!
my $ofh = select OUT;
$| = 1;
print OUT "\n";
$| = 0;
select $ofh;
를 통해, print OUT 에 쌓여있던 버퍼를 한번에 뿜어내는 것이죠. 그때 그때 로그 파일이 작성되기 때문에 저한테는 굉장히 유용하네요. :D
열심히 스크립트를 작성하고, 꼼꼼하게 로그파일까지 만들어지게 해두었는 데 막상 tail -f 'FILENAME' 신공으로 로그파일을 좀 보려니, 왠걸 아무것도 들어있지 않는 경우가 발생합니다. 한참을 뒤적거리다가 펄 자체의 버퍼링이 관련이 있다는 것을 발견했습니다.
Suffering from Buffering?
요는, 펄 자체에서 좀 더 효율적으로 메모리 관리를 하기 위해서 바로 바로 쏟아내는 게 아니라 버퍼링 시켜서 조금 모아뒀다가 한번에 쏟아낸다고 하네요. (쏟아낸다는 표현이 껄끄럽긴 하지만)
자세한 내용은 위 사이트를 보시면 되겠고, 다른 건 다 귀찮고 그냥 방법만 알면 된다 하시는 분은 사이트에서 Flushing on Command 항목을 보시면 되겠네요. 표현이 조금 우습지만, 파일 핸들러를 뜨겁게 만들어서 버퍼를 바로 토해내게(!!) 만드는 겁니다!
my $ofh = select OUT;
$| = 1;
print OUT "\n";
$| = 0;
select $ofh;
를 통해, print OUT 에 쌓여있던 버퍼를 한번에 뿜어내는 것이죠. 그때 그때 로그 파일이 작성되기 때문에 저한테는 굉장히 유용하네요. :D
's_tudies > linux' 카테고리의 다른 글
| 유닉스 명령어: 디렉토리내 파일 갯수 알아보기 (1) | 2007/03/29 |
|---|---|
| 유닉스 명령어: 디스크 사용량 알아보기 (0) | 2007/03/28 |
| 우분투 6.06 (대퍼) 설치기 (2) | 2006/12/15 |
| 펄 프로그래밍 - PRINT OUT 버퍼링 문제 (0) | 2006/12/15 |
| 펄 & SQL 프로그래밍 (2) | 2006/12/15 |
| 우분투 설치하기 관련 링크 - ATI x700 그래픽 카드 관련 (0) | 2006/12/10 |