wgetがファイルをダウンロードしているかどうかはどうすればわかりますか?

wgetがファイルをダウンロードしているかどうかはどうすればわかりますか?

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

または同様のもの

関連情報