web-dev-qa-db-ja.com

Linuxコマンドラインでファイルのダウンロードがすでに完了しているかどうかを知る方法は?

Linuxでコマンドラインから大きなファイルをダウンロードしている場合、それがすでに完了しているかどうかを知るためのコマンドはありますか?現在、ファイルサイズが予想されるファイルサイズと同じかどうかを確認しているだけですが、予想されるファイルサイズがわからない場合はどうなりますか?現在、lsは、ファイルが現在ダウンロード中であっても、file.Zipのようなものではなく、正確なファイル名(つまり、file.Zip.temp)を表示します。

3
IMB

wgetでダウンロードしている場合は、インスタンスがまだ実行されているかどうかを簡単に確認できます。

ps -ef | grep wget | grep -v grep

また、ファイルがまだwgetによって開かれているかどうかを確認できます。明らかに、ここでパスを置き換えます。

lsof/path/to/downloaded/file
6
slhck

バックグラウンドでwgetを実行する必要がない場合は、実行しないでください。問題が発生するだけです。

ps -C wgetまたはpidof wget(より短く、おそらく非POSIX、ps -ef | grep wget | grep -v grepと同等)をチェックするようなソリューションには反対します。なぜなら、それらは1つだけでなく任意のwgetを考慮するからです。あなたが興味を持っているのは、あなたのマシンが1つのタスクだけを実行しない場合、これは想定外の仮定かもしれません。

スクリプト内にいる場合は、wget & WGETPID=$!して、そのPIDを確認できます。または、単にwaitを実行して、バックグラウンドプロセスが終了するのを待つこともできます。

ダウンロードの成功と失敗を区別するために、何かを行うことが重要な場合があります。 if wget ... ; then touch wget_ok ; else touch wget_error ; fi

複数のwgetコマンドを実行している場合はどうなりますか?

このシナリオに対応する必要がある場合は、いくつかの異なることを行うことができます。

  • 進行状況を既知の名前のファイルにパイプして確認することができます。
  • 質問にあったアイデアを強制的に一時ファイルにダウンロードし、2番目のコマンドで名前を変更することができます。
  • プロセスが完了した後、つまりトークンを書き込むことができます。

    wget 'file'; touch file.is.done
    
2
Nick

lsofapproach slhckが提案 がおそらく最良の方法です。ダウンロードの完了後にファイルを作成することを含む他の提案を使用する場合は、&&の代わりに;を使用して、ダウンロードが正しく終了した場合にのみレポートが生成されるようにします。

wget file && touch file.is.done
1
terdon

むしろ音の信号が欲しいので、すぐに見たくない長い操作(wgetだけでなく、時間のかかる)を開始した場合は、次のようなものを使用します

_`LONG_COMMAND && SOUND_OK || SOUND_ERROR`
_

そのため、いつ終了するかをすぐに知る必要がある場合でも、チェックのために時々自分自身を中断することなく、同時に何か他のことを行うことができます。最初のコマンドが終了した場合、結果を聞くことができます(_SOUND_OK_の結果)ステータスは_0_および_SOUND_ERROR_(その他の場合)であり、終了時にのみ1回チェックします。タスクが終了したことだけを知る必要がある場合は、現在のアクティビティを続行することもできます。 _LONG_COMMAND_はwgetであり、_SOUND_OK_として私は_echo -e "\a" >/dev/console_を好みますが、コマンドを使用して任意のオーディオサンプルを再生できます。

Wgetがいくつかの異なる終了コードを生成できる限り、それらを使用して、次のように「BIOSスタイル」でアラームコマンドを決定できます。

_wget URL;\
CODE=$?;\
beep;\
[ $CODE -gt 0 ] && while true; do
 for peek in `seq 1 $CODE`; do
 beep; sleep 1;done
sleep 3; done
_
0
Leben Gleben

-o dl.logオプションを指定してwgetを開始できます。つまり、この行が(正規表現を使用して)表示されるかどうかを定期的に確認できるログファイルを定義できます。

12:59:48 (126.32 MB/s) - `/path/to/downloaded/file/some_file.Zip' saved [95235097/95235097]

実際には、「tail dl.log」を使用して、すべてを読み取る代わりに、最後の数行のみを取得できます。

0