wget -i 各ファイルが完了したら通知(処理目的)

wget -i 各ファイルが完了したら通知(処理目的)

処理できることを願っています多くの種類ファイルをwget -iダウンロードしたらすぐにダウンロードします(リスト内のすべてのファイルが完了するのを待つのではなく、プロセス全体が終了しwgetます)。問題は、wgetファイルがその場所からダウンロードされるため、いつファイルを処理しても安全であるか(完全にダウンロードされたか)確認できないことです。理想的な原則的なアプローチは、wget最初にファイルを一時ディレクトリにダウンロードし、mv完了したら実際のターゲットディレクトリにダウンロードすることです。アトム*であるため、mvターゲットディレクトリにあるすべてのファイルが完全にダウンロードされ、処理の準備ができていることを確認できます。

マンページを見ましたが、これに関連する内容が見つからないようです。現在ハッキングはfuserwgetしかし、これは非常に脆弱なので(wgetファイルを何度も開くとどうなりますか?)、避けたいと思います。

これを完全に達成する方法がない場合、同じ効果を得るための解決策はありますか?関連する場合、これらのファイルはHTMLページです。

*追加:明らかにmvおそらく原子ではないでしょう。(私の環境では本当です。) 厳しい原子性が必要だとは思わない。唯一の要件は、ファイル名がターゲットディレクトリに変更されるとファイルが完全にダウンロードされることです(そして、コンテンツ全体は新しいパスですぐに利用可能になります)。

編集:プロセスを複数のコマンドに分割することは、特定のコア機能(速度制限、HTTP接続の維持、DNSキャッシュなど)wgetの使用を防ぐため、理想的ではありません。wget

答え1

代わりに使用してくださいaria2c

aria2c --on-download-complete="/path/to/script" -i file

したがって、スクリプトは次のようになります。

#!/bin/bash
notify-send "Finished: $3"
  • $1aria2cのgidです。
  • $2ファイル数です。
  • $3ファイル名です。

関連情報