2013-12-13 52 views
1

晚報,Wget的懸掛,腳本將停止

我使用xargs的

跑了很多的wget命令
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秒後被殺死?我可以重新下載以後失敗的所有網址。

在系統監視器中,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 –