Skocz do zawartości

Równoczesne Uruchamianie Kilku Kopii Wget`a


kirov

Rekomendowane odpowiedzi

Witam,

 

Gdy w pliku tekstowym mam zapisane kilkadziesiąt URLi automatyczne pobranie ich wget`em ogranicza się do napisania jednej pętli. Problem w tym, że wget`y w pętli uruchamiane są pojedyńczo a w dodadku w kolejności, nowy wget zaczyna działać dopiero po zakończeniu działania poprzedniego. Istnieje oczywiście możliwość wrzucenia procesu do tła ale takie rozwiązanie ma swoje minusy.

 

Czy ktoś wie, jak napisać skrypt który będzie pobierał równocześnie x linków (np. 10 równoczesnych stumieni)do momentu pobrania wszystkich?

 

Mam nadzieje, że wyraziłem problem zrozumiałym językiem :) z góry dziękuje za wszystkie opinie.

Odnośnik do komentarza
Udostępnij na innych stronach

Minusy są takie, że wrzucając w tło nie wiem w którym momencie, każdy z nich skończy działanie.

Jedynym sposobem jaki mi przychodzi do głowy to odczekiwanie pewnego czasu miedzy kolejnymi uruchomieniami kolejnych wget`ów. Jak wybiore za długie odcinki czasu może stać się tak, że w pewnym momencie nie będzie nic pobierane, jak za krótkie mogę uruchomić z 40 kopi wgta prawie na raz :blink:

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Napisalem Ci prosty skrypt w bashu, mam nadzieje, ze sie przyda i bedzie dobrze dzialac ;)

#!/bin/bash
ILE=3
ADRESY=$@
URUCHOMIONE=0 #bedzie przechowywac ilosc aktualnie uruchomionych wget-ów

!(test "$ADRESY") && echo "Nie podano argumentów" && exit 1

for adres in $ADRESY; do
    URUCHOMIONE=$(((`ps aux |grep "\ wget .*$" |wc -l`)-1))
    while [ $URUCHOMIONE -gt $ILE ]; do
        sleep 3s
        URUCHOMIONE=$(((`ps aux |grep "\ wget .*$" |wc -l`)-1))
    done
    echo "Sciagamy $adres"
    nohup wget $adres &
done

Minusem takiego rozwiazania jest to, ze po zakonczeniu polecenia wget-y wciaz moga sie wykonywac. Jesli chcialbys tego unikac musialbys przepisac po done jeszcze raz petle while i powinno byc dobrze. Chyba ;)

 

EDIT: Aha, oczywiscie jesli chcesz zeby Ci sie uruchamialo 10 wget-ów to nie zmieniasz wartosc zmiennej ILE na 10 :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...