우선, bash 스크립트를 작성하는 것이 처음이라 사소했다면 사과드립니다. jpg
특정 폴더에 파일이 업로드될 때 마다 webp
. cwebp
부정확하다). Bash 스크립팅 매뉴얼을 읽고inotify기다려페이지에서 다음 코드를 작성했습니다.
inotifywait -m /home/ben -e create -e moved_to |
while read path action file; do
# echo "The file '$file' appeared in directory '$path' via '$action'"
if [[ $file = *.jpg ]]
then
cwebp $file -o $file.webp
fi
done
mv
이것은 예제 명령을 사용할 때 작동하지만 위의 코드를 사용할 때 다음 오류가 발생합니다.
Could not read 0 bytes of data from file test.jpg
Error! Could not process file test.jpg
Error! Cannot read input picture file 'test.jpg'
단독으로 명령을 실행 하면 cwebp test.jpg -o test.jpg.webp
오류 없이 실행됩니다. 내가 뭘 잘못했나요? 이는 파일이 생성된 후에 발생합니다. 왜 cwebp
0바이트가 표시됩니까?
답변1
사용 중인 스크립트 -e create
는 inotifywait 를 사용하지 않습니다 -e close_write
. 차이점은 데이터가 파일에 기록되기 전에 생성 이벤트가 발생한다는 것입니다. 따라서 cwebp
"파일에 0바이트의 데이터가 있습니다".
~에서inotify기다려참조한 페이지:
- 만들다
모니터링되는 디렉터리에 파일 또는 디렉터리가 생성되었습니다.
- 글쓰기 닫기
감시된 파일 또는 감시된 디렉터리의 파일이 쓰기 가능 모드로 열린 후 닫혔습니다. 이는 반드시 파일이 작성되었음을 의미하지는 않습니다.