2010-12-20 5 views
2

File::Tail 모듈을 사용하여 로그 파일을 모니터링하기 위해 간단한 Perl 스크립트를 사용하고 있지만 제대로 작동하지 않는 것 같습니다.File :: Tail 모듈을 사용하는 Perl 스크립트가 작동하지 않는 이유는 무엇입니까?

IRC를 통해이 아이디어를 사용하는 것이지만, 대화식 인터프리터로 문제를 해결 한 후 작동하지 않는 것으로 보아서 File :: Tail 문제를 좁혔습니다. 나는 파일을 모니터하기 위해 다음과 같은 기본 예제 아래를 절단 한 아무것도에서 모든 파일에 추가 할 때 새 항목이 발생하지 :

#!/usr/bin/perl -w 

use strict; 

use File::Tail; 

my $file = File::Tail->new("/var/log/apache2/error.log"); 

while(defined(my $line = $file->read)) 
{ 
    print "$line\n"; 
} 

사람이 문제가 될 일을 제안 할 수 있습니다? 나는 perldoc 항목을 훑어 보았고 실제로 거기에서 복사 되었기 때문에 눈부신 오류를 실제로 볼 수는 없습니다. 나는 Ubuntu Lucid를 운영하고있다.

+0

문제가 해결되었습니다. 나는 방금 뛰었고 약 1 분 후에 인쇄했습니다. 내가 그것을 달릴 때 나는 아직도 조금 너무 성급한 것처럼 보였다 - 아직도, 수업은 배웠다! –

+0

FYI @ mattbd- 질문을 삭제하지 마십시오. 충분한 사람들이 투표를하기 위해 투표하면, 그것은 움직이게됩니다. 그것이이 사이트의 작동 방식입니다. – mfinni

답변

2

권한 오류 일 수 있습니까? 스크립트를 실행중인 사용자가 /var/log/apache2/error.log으로 액세스 할 수 있습니까?

+0

예 - 문제없이 로그를 보려면 less를 사용할 수 있습니다. –

0

그 밖의 모든 것이 실패하는 경우 직접 구현하십시오! 난 단지 당신에게 here 또는 here를 연결 한 경우에 입력 할 수 없었을 것이다

use Fcntl qw(:seek); 

while (1) { 
    while (<$fh>) { 
     ... 
    } 
    sleep(1); 
    seek $fh, 0, SEEK_CUR; 
} 

.... 그것은 완벽하게 작동

난 그냥 완벽한 도구 있었던 것을 깨달았다

0

는 ... - 난 그냥 Ctrl-C를 타격하기 전에 충분히 오래 방치하지 않았다. D' oh! 오, 잘 배웠다! 어쨌든 당신의 도움에 감사드립니다!

+0

답변으로 답변을 게시하지 마십시오. –

관련 문제