Как установить wget на тайм-аут после загрузки больше фиксированной продолжительности

Как установить wget на тайм-аут после загрузки больше фиксированной продолжительности

Я хочу, чтобы wget начал (попытался) загрузку, а затем, если она не будет завершена в течение 10 секунд, я хочу, чтобы она прекратила загрузку.

wget --timeout 10 http://url

Кажется разумной попыткой, но похоже, что он устанавливает только --dns-timeout, --connect-timeout и --read-timeout. Таким образом, он может ждать 9 секунд для dns, еще 9 для connect, а затем продолжать загрузку вечно, пока данные продолжают поступать с постоянной скоростью (без 10+ секундной паузы).

решение1

По сути это будет что-то вроде:

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

решение2

Это неточното, о чем вы спрашиваете, поскольку это должно привести к тайм-ауту Wget только в том случае, если загрузка простаивает более 10 секунд:

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

О --read-timeoutварианте, отWget 1.13.4 Руководство:

Установите тайм-аут чтения (и записи) на секунды секунд. «Время» этого тайм-аута относится к времени простоя: если в любой момент загрузки данные не поступают в течение более указанного количества секунд, чтение завершается неудачей, и загрузка перезапускается. Эта опция не влияет напрямую на продолжительность всей загрузки.

Связанный контент