Czy można ograniczyć (ograniczyć) prędkość pobierania wget
lub curl
?
Czy można zmienić wartość przepustnicy podczas pobierania?
SIGSTOP
lub ctrl + z i wznowić go później za pomocą SIGCONT
lub fg. To powinno zatrzymać proces pobierania.
Czy można ograniczyć (ograniczyć) prędkość pobierania wget
lub curl
?
Czy można zmienić wartość przepustnicy podczas pobierania?
SIGSTOP
lub ctrl + z i wznowić go później za pomocą SIGCONT
lub fg. To powinno zatrzymać proces pobierania.
Odpowiedzi:
Tak, obsługa wget i curl ogranicza szybkość pobierania. Obie opcje są bezpośrednio wymienione na stronie man.
--limit-rate <speed> Specify the maximum transfer rate you want curl to use. This feature is useful if you have a limited pipe and you'd like your transfer not to use your entire bandwidth. The given speed is measured in bytes/second, unless a suffix is appended. Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
Na przykład: curl --limit-rate 423K
--limit-rate=amount Limit the download speed to amount bytes per second. Amount may be expressed in bytes, kilobytes with the k suffix, or megabytes with the m suffix. For example, --limit-rate=20k will limit the retrieval rate to 20KB/s. This is useful when, for whatever reason, you don't want Wget to consume the entire available bandwidth.
Na przykład: wget --limit-rate=423k
wget
nie curl
są programami interaktywnymi.
wget
lub curl
przetworzyć i wznowić za pomocą wget -c
lub curl -C
. Jeśli naprawdę trzeba przekonfigurować uruchomiony proces, należy sączyć z demon - ale konfiguracja jest nieco skomplikowana. Ewentualnie zajrzyj do kształtowania ruchu - ponownie, jeśli konfiguracja jest skomplikowana.
2 lata później wrzucę ten smakołyk, podczas gdy wget
i curl
nie są interaktywne, przynajmniej wget
(i być może, curl
ale nie wiem na pewno) ma -c
przełącznik (co oznacza kontynuację od miejsca, w którym wcześniej zakończyłem pobieranie). Więc jeśli musisz zmienić prędkość w trakcie pobierania i prawdopodobnie użyłeś -c
przełącznika z --limit-rate=x
wtedy, możesz zatrzymać wget
i ponownie uruchomić go z inną prędkością i to się zmieni.
Możliwe jest ograniczenie prędkości ruchu za pomocą narzędzi tc
i netem
, ale ograniczy to szybkość interfejsu sieciowego komputera. Zakładam, że korzystasz tylko wget
lub curl
żadna inna aplikacja nie wymienia ruchu przez interfejs sieciowy.
tc
używa Token Bucket Filter (TBF) do kontrolowania szybkości.
Jednym z przykładów TBF byłby następujący (zob. Http://www.lartc.org/manpages/tc-tbf.html ):
Aby dołączyć TBF o przedłużonej maksymalnej szybkości 0,5 Mb / s, szczytowej prędkości 1,0 Mb / s, buforze 5 kilobajtów, z obliczonym limitem wielkości kolejki przed wiadrem, tak że TBF powoduje co najwyżej 70 ms opóźnienia, przy zachowaniu idealnej wartości szczytowej , kwestia:
# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540
Kolejny przykład użycia usc tc i netem byłby następujący (znaleziony w http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):
W dyscyplinie netem nie ma wbudowanej kontroli stawek, zamiast tego użyj jednej z innych dyscyplin, które kontrolują stawki. W tym przykładzie używamy Token Bucket Filter (TBF) w celu ograniczenia wydajności.
Aby dodać opóźnienie każdego pakietu przechodzącego / przechodzącego przez interfejs eth0
# tc qdisc add dev eth0 root handle 1:0 netem delay 100ms
aby dodać szybkość transmisji danych w TBF, rozmiar bufora pakietów i maksymalny limit serii
# tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000
Aby zobaczyć listę reguł przypisanych w tc dla interfejsu eth0
# tc -s qdisc ls dev eth0
Dane wyjściowe powyższego polecenia byłyby takie jak poniżej
qdisc netem 1: limit 1000 delay 100.0ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
Sprawdź opcje bufora i limitu, ponieważ może się okazać, że potrzebujesz większych wartości domyślnych (te są w bajtach)