"abc.csv" 파일과 같은 특정 파일이 "mydir"과 같은 디렉터리에 도달하면 쉘 스크립트를 사용하여 프로세스를 실행해야 합니다.
"CSV의 데이터를 테이블로 로드하는 프로그램이 있습니다. 프로세스가 완료되면 소스 파일의 이름이 "filename"으로 변경됩니다._마지막. 같은 이름의 파일이 매일 여러 개 수신될 수 있습니다. "
이 경우 디렉토리에 새 파일이 들어갈 때마다 LINUX 환경에서 쉘 스크립트를 사용하여 프로세스를 실행해야 합니다.
답변1
inotify 도구(http://linux.die.net/man/1/inotifywait).
$ cat monitor_csv.sh
if (( $# == 0)); then
echo "Usage $0 <directory-to-monitor>"
exit 1
fi
DIR=$1
while true;
do
res=$(inotifywait $DIR)
echo "Get from inotifywait: "$res
if test -f $DIR/abc.csv; then
echo "lauching a procedure and breaking out of the loop"
# bash ./run_procedure.sh
break
else
echo "keep watching"
fi
done
echo "finished"
예는 다음과 같습니다.
$ ./monitor_csv.sh ./mydir
Setting up watches.
Watches established.
Get from inotifywait: ./mydir/ CREATE abc2.csv
keep watching
Setting up watches.
Watches established.
Get from inotifywait: ./mydir/ CREATE abc.csv
lauching a procedure and breaking out of the loop
finished
이 스크립트는 다음과 같이 일부 개선될 수 있습니다.
사용 시간 초과
inotifywait
:-t <seconds>, --timeout <seconds> Listen for an event for the specified amount of seconds, exiting if an event has not occurred in that time.
정확한 이벤트 유형 지정
inotifywait -e create -e moved_to ./mydir
모든 이벤트 목록:
access file or directory contents were read
modify file or directory contents were written
attrib file or directory attributes changed
close_write file or directory closed, after being opened in
writeable mode
close_nowrite file or directory closed, after being opened in
read-only mode
close file or directory closed, regardless of read/write mode
open file or directory opened
moved_to file or directory moved to watched directory
moved_from file or directory moved from watched directory
move file or directory moved to or from watched directory
create file or directory created within watched directory
delete file or directory deleted within watched directory
delete_self file or directory was deleted
unmount file system containing file or directory unmounted