一定時間以上ダウンロードした後に wget をタイムアウトに設定する方法

一定時間以上ダウンロードした後に wget をタイムアウトに設定する方法

wget にダウンロードを開始 (試行) させ、10 秒経過しても完了しない場合は中止するようにします。

wget --timeout 10 http://url

妥当な試みのように思えますが、--dns-timeout、--connect-timeout、および --read-timeout のみを設定するようです。したがって、データが一定のペースで送信され続ける限り (10 秒以上の一時停止なし)、DNS に 9 秒、接続にさらに 9 秒待機し、その後永久にダウンロードを続けることができます。

答え1

基本的には次のようになります:

wget http://www.somesite.com/file.zip &
PID=$!
sleep 10
if [ `ps ax | grep $PID` -ne '' ]
   then
   kill $PID
fi

答え2

これはその通りあなたが尋ねているのは、ダウンロードが 10 秒以上アイドル状態になった場合にのみ Wget がタイムアウトになるはずだということです。

wget --read-timeout= 10 http://url

オプションについては--read-timeoutWget 1.13.4 マニュアル:

読み取り (および書き込み) タイムアウトを seconds 秒に設定します。このタイムアウトの「時間」はアイドル時間を指します。ダウンロードのどの時点でも、指定された秒数を超えてデータが受信されない場合は、読み取りが失敗し、ダウンロードが再開されます。このオプションは、ダウンロード全体の期間に直接影響しません。

関連情報