1
디렉토리 아래에있는 파일을 감시해야합니다. 아래 스크립트를 perl로 코딩했습니다. 하지만 내가 원하는 것을하지 않습니다.perl을 사용하여 디렉토리에서 파일을 보 기
- 파일이 도착할 때마다 이동해야합니다.
- 그리고 나서 파일을 계속보고 있어야합니다.
스크립트는 백그라운드에서 실행되어야합니다. 문은 '파일을 사용할 수'인쇄에 대한 유지하면
#!/usr/bin/perl use warnings; use File::Copy qw(move); $src_dir = '/root/prasanna/dir'; $tgt_dir = '/root/prasanna/dir/dir1'; while (true) { opendir(DIR, "/root/prasanna/dir") or die "Cannot open /root/prasanna/dir: $!\n"; my @Dircontent = readdir DIR; close DIR; my $items = @Dircontent; if ($items > 2) { print "files available"; while ($items) { print $items; move $src_dir. '/' . $items, $tgt_dir . '/' . $items; unlink $items; } } else { sleep 50; } }
위의 코드의 문제는 1.이다. 무한 루프가 계속되면 파일을 다시 보지 않습니다. 파일에서 작업을해도 파일을 다시 찾는 법은 없습니다. 2. 스크립트가 백그라운드에서 실행되지 않습니다.
도움이 매우 감사합니다. 미리 감사드립니다.
가독성을 향상시키기 위해 코드를 포맷하십시오
참고가 로컬 파일 시스템 (즉, 어떤 NFS 마운트)를 모니터링 할 수 있습니다 ... 리눅스 :: Inotify2를 사용합니다. – Joeblade
방금 코드를 다시 포맷하거나 수정하려고 시도했습니다. 그것은 a) 불완전하고 b) 경고를 발행합니다. 경고를 수정하고, '엄격한 사용'을 설정하고 코드를 형식화하면 더 나은 답변을 얻을 수 있습니다. – Sobrique
@joeblade 다른 줄에 코드를 삽입하는 방식으로 편집 할 수 없습니다. 그러면 오류가 표시됩니다. – vds