wget
저는 밤에 자동으로 파일(주로 zip 파일)을 다운로드하는 습관이 있습니다 .
하지만 아침에 압축을 풀 수 없는 파일이 여러 개 발견되는 경우도 있습니다. 왜 이런 일이 발생하는지 모르겠습니다. 원격 서버에 문제가 있을 수 있습니다.
"unzip -t"를 사용하여 다운로드 폴더의 zip 파일을 주기적으로 테스트하는 스크립트를 작성하고 싶지만 다운로드되는 파일을 테스트하고 싶지 않습니다. 그렇다면 파일이 사용되고 있는지 어떻게 알 수 있습니까 wget
?
답변1
fuser
, 또는 을 사용할 수 있습니다 lsof
.
fuser foo.zip
출력은 다음과 같습니다.
$ fuser archlinux-2013.02.01-dual.iso
/home/chris/archlinux-2013.02.01-dual.iso: 22506
$ awk -F'\0' '{ print $1 }' /proc/22506/cmdline
wget
답변2
파일을 임시 이름이나 디렉터리에 다운로드하도록 다운로드 스크립트를 변경한 다음 다운로드가 완료된 후 결과를 이동합니다. 이는 wget이 여전히 작동하는지 감지하는 것보다 더 안정적입니다. 특히 wget이 중단된 경우(예를 들어 다시 시작하여) 전체 다운로드를 위해 부분 파일을 착각할 위험이 없습니다. 또한 wget의 반환 상태를 테스트해야 합니다. 손상된 파일이 실제로는 다운로드 중단으로 인해 잘린 파일일 가능성이 높습니다.
cd incoming &&
wget http://example.com/foo.zip &&
mv foo.zip ..
답변3
lsof를 사용하여 프로그램에서 파일이 열려 있는지 확인할 수 있습니다.
for FILE in /path/to/files/*.zip
do
if [ -z "$(lsof $FILE)" ]
then
unzip $FILE
fi
done
아니면 비슷한 것