kirov Napisano Lipiec 25, 2006 Zgłoszenie Share Napisano Lipiec 25, 2006 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 More sharing options...
ecik__ Napisano Lipiec 25, 2006 Zgłoszenie Share Napisano Lipiec 25, 2006 Istnieje oczywiście możliwość wrzucenia procesu do tła ale takie rozwiązanie ma swoje minusy. A jakie minusy ma takowe rozwiązanie? Obawiam się, że może to być jedyne... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
kirov Napisano Lipiec 26, 2006 Autor Zgłoszenie Share Napisano Lipiec 26, 2006 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 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
exbros Napisano Lipiec 26, 2006 Zgłoszenie Share Napisano Lipiec 26, 2006 mogę uruchomić z 40 kopi wgta prawie na raz A nie wystarczy przed uruchomieniem kolejnej petli zliczyc ps -e | grep wget i nie uruchamiac jesli np >10 ? Pozdro Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Lipiec 26, 2006 Zgłoszenie Share Napisano Lipiec 26, 2006 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 More sharing options...
kirov Napisano Lipiec 26, 2006 Autor Zgłoszenie Share Napisano Lipiec 26, 2006 Genialnie! Jutro jak będę miał chwilę sprawdzę działanie. Wielkie dzięki! Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
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ę