두 개의 디렉토리를 고려 A
하고 B
.
A
A.txt
3초마다 내용이 변경되는 텍스트 파일이 포함되어 있습니다 .
A.txt
쉘 스크립트는 디렉토리로 이동 B
하고 이름을 A_1.txt
.
3초 후에 스크립트가 디렉토리 A.txt
에 복사되어야 합니다 .A_2.txt
B
구분 기호를 누를 때까지 스크립트가 종료되어서는 안 됩니다.
답변1
bash
또는 ksh93
및 inotifywait
:을 사용하십시오 .
i=0
while true; do
inotifywait -e close_write A/A.txt
cp A/A.txt "B/A_$(( ++i )).txt"
done
Ctrl+C누르면 스크립트가 종료됩니다.
참고: Linux를 사용하지 않기 때문에 inotifywait
실제로 내 컴퓨터에서 이벤트를 캡처 할 수는 없지만 close_write
Linux에서는 이 작업이 올바르게 수행되기를 바랍니다.
inotifywait
쓰기 위해 파일을 연 외부 프로세스가 쓰기를 마치고 파일을 닫으면 A/A.txt
반환하는 호출입니다 . 이렇게 하면 스크립트가 계속해서 디렉터리에 파일을 복사할 수 있습니다 B
.
이는 가끔씩 파일에 쓰는 프로세스와 스크립트를 동기화하는 것보다 더 편리합니다.