2013-12-13 2 views
1

вечер,Wget висячие, Script Останавливает

Я бегу много команд Wget с помощью xargs

cat urls.txt | xargs -n 1 -P 10 wget -q -t 2 --timeout 10 --dns-timeout 10 --connect-timeout 10 --read-timeout 20 

Однако после того, как файл был разобран, некоторые из экземпляров Wget 'повесить'. Я все еще вижу их в системном мониторе, и для их завершения может потребоваться около 2 минут.

Есть ли способ указать, что экземпляр должен быть убит через 10 секунд? Я могу повторно загрузить все URL-адреса, которые не удались позже.

В системном мониторе экземпляры wget отображаются как sk_wait_data, когда они зависают. xargs существует как «do_wait», но wget кажется проблемой, так как однажды я их убил, мой сценарий продолжается.

ответ

2

Я считаю, что это нужно сделать, это:

wget -v -t 2 --timeout 10 

Согласно документации:

  • --timeout: Установите сетевой таймаут в секундах секунд. Это эквивалентно заданию --dns-timeout, -connect-timeout и -read-timeout, одновременно.

Проверьте также подробный вывод и посмотрите, что он делает.

Кроме того, вы можете попробовать:

timeout 10 wget -v -t 2 

Или вы можете делать то, что тайм-аут делает внутренне:

(cmdpid=$BASHPID; (sleep 10; kill $cmdpid) & exec wget -v -t 2) 

(Как видно: BASH FAQ entry #68: "How do I run a command, and have it abort (timeout) after N seconds?")

+0

Это не делает любая разница. Я смотрю на подробный вывод, но есть так много, что если что-то здесь, я не думаю, что увижу его. –

+0

Проверьте «отредактированную» версию. – Rico

+0

Спасибо, решение для тайм-аута достаточно для меня: D –

Смежные вопросы