Я хочу, чтобы 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 Руководство:
Установите тайм-аут чтения (и записи) на секунды секунд. «Время» этого тайм-аута относится к времени простоя: если в любой момент загрузки данные не поступают в течение более указанного количества секунд, чтение завершается неудачей, и загрузка перезапускается. Эта опция не влияет напрямую на продолжительность всей загрузки.