Xargs i Wget przestają działać po godzinie


8

Uruchamianie skryptu z Cygwin na Windows XP z Dual Core i 4GB Ram

cat url_list.txt | xargs -P50 wget -i

Próbuję włoka przez 4GB o zawartości do pobrania (ok 43 mln)

Działa dobrze przez około pierwszą godzinę, a następnie powłoka Bash i pobieranie zatrzymuje się, mimo że tylko 2% za pośrednictwem listy adresów URL.

Jakieś pomysły na to, co może być nie tak?

Jaki jest najlepszy sposób na debugowanie, dlaczego zatrzymuje się po godzinie?

Odpowiedzi:


2

Możliwe, że wget potrzebuje czasu na pobranie niektórych plików. Czy są jakieś procesy wget / xargs w pamięci w okresie, w którym wydaje się być zawieszone? Jeśli tak, to czy jest to pełne 50 procesów przydzielonych xargsowi z flagą -P50, czy może jakoś przekroczyło tę liczbę lub mniej niż tę liczbę i żadne nowe instancje nie są prawidłowo tworzone? Chociaż jest uruchamiany w systemie cygwin, spójrz na listę procesów w samym systemie Windows, ponieważ każde pobieranie widgetów powinno uruchamiać instancję w menedżerze zadań.


0

Zakładam, że adresy URL dotyczą różnych witryn. W takim przypadku możesz trafić na witryny, które reagują wolno i które zawieszą jeden z twoich wgetów. Ponieważ masz 50 uruchomionych, będziesz musiał trafić 50 z tych witryn, zanim nic się nie wydarzy.

Aby sprawdzić, czy tak jest w tym przypadku, spróbuj zabić jeden z wiszących wgetów i sprawdź, czy nie został zablokowany.

Aby pominąć zawieszające się adresy URL, możesz dać czas wgetowi limit czasu:

wget -T 60
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.