Điều chỉnh tốc độ tải xuống của wget hoặc curl trong khi tải xuống


97

Có thể điều tiết (giới hạn) tốc độ tải xuống wgethay curlkhông?

Có thể thay đổi giá trị ga trong khi nó đang tải xuống?


3
Không, không thể thay đổi tốc độ trong khi tải xuống. Hãy xem các trình quản lý tải xuống gui như fatrat hoặc multiget
Ulrich Dangel

3
Tuy nhiên, bạn có thể tạm dừng quá trình thông qua SIGSTOPhoặc ctrl + z và tiếp tục lại sau với SIGCONThoặc fg. Điều này sẽ tạm dừng quá trình tải xuống.
Ulrich Dangel

Tôi tự hỏi nếu có một cách chung để điều tiết bất kỳ chương trình đang chạy nào, tức là thông qua việc đặt biến môi trường.
Ehtesh Choudhury

@ ulrich-dangel --limit-Rate = số tiền
Chrips

Câu trả lời:


131

Có cả wget và curl hỗ trợ giới hạn tốc độ tải xuống của bạn. Cả hai tùy chọn được đề cập trực tiếp trong trang người đàn ông.

Xoăn

   --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.

Ví dụ: curl --limit-rate 423K

wget

   --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.

Ví dụ: wget --limit-rate=423k


2
Có thể thay đổi nó một cách linh hoạt trong khi quá trình tải xuống đang diễn ra không?
Gautam

2
@GautamK Không wgetcũng như curlcác chương trình tương tác.
Ulrich Dangel

12
@GautamK Đối với một tệp lớn, nếu máy chủ chấp nhận nó, bạn có thể tắt wgethoặc curlxử lý và tiếp tục với wget -choặc curl -C. Nếu bạn thực sự cần phải cấu hình lại một quy trình đang chạy, hãy sử dụng nhỏ giọt với một daemon - nhưng thiết lập hơi phức tạp. Ngoài ra, hãy nhìn vào định hình lưu lượng - một lần nữa, thiết lập nếu phức tạp.
Gilles

4

2 năm sau tôi sẽ ném mẩu tin này vào, trong khi wgetcurlkhông tương tác, ít nhất wget(và có thể curlnhưng tôi không biết chắc chắn) có công -ctắc (viết tắt của tiếp tục từ nơi tôi đã ngừng tải xuống trước đó). Vì vậy, nếu bạn cần thay đổi tốc độ của mình ở giữa bản tải xuống và có lẽ bạn đã sử dụng công -ctắc với --limit-rate=xthì bạn có thể dừng wgetvà khởi động lại với tốc độ khác và nó sẽ thay đổi.


2

Có thể giới hạn tốc độ lưu lượng bằng cách sử dụng tcnetemcác công cụ nhưng điều này sẽ giới hạn tốc độ cho giao diện mạng của máy tính. Tôi giả sử rằng bạn chỉ sử dụng wgethoặc curlkhông có ứng dụng nào khác đang trao đổi lưu lượng truy cập thông qua giao diện mạng.

tc sử dụng Bộ lọc mã thông báo (TBF) để kiểm soát tốc độ.

Một ví dụ về TBF sẽ như sau (ref. Http://www.lartc.org/manpages/tc-tbf.html ):

Để gắn TBF với tốc độ tối đa 0,5mbit / s duy trì, tốc độ cực đại là 1,0mbit / s, bộ đệm 5kilobyte, với giới hạn kích thước hàng đợi trước xô được tính toán để TBF gây ra tối đa 70ms độ trễ, với hành vi đạt cực đại hoàn hảo , vấn đề:

# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540

Một ví dụ khác về usign tc và netem sẽ như sau (được tìm thấy trong http://www.linuxfoundation.org/collabISE/workgroups/networking/netem ):

Không có kiểm soát tỷ lệ tích hợp trong kỷ luật netem, thay vào đó sử dụng một trong các ngành khác thực hiện kiểm soát tỷ lệ. Trong ví dụ này, chúng tôi sử dụng Bộ lọc mã thông báo (TBF) để giới hạn đầu ra.

Để thêm độ trễ của mỗi gói đi / đến thông qua giao diện eth0

 # tc qdisc add dev eth0 root handle 1:0 netem delay 100ms

để thêm tốc độ dữ liệu trong tbf, kích thước bộ đệm gói và giới hạn cụm tối đa

 # tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000

Để xem danh sách các quy tắc được gán trong tc cho giao diện eth0

 # tc -s qdisc ls dev eth0

Đầu ra của lệnh trên sẽ như dưới đây

 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 )

Kiểm tra các tùy chọn cho bộ đệm và giới hạn vì bạn có thể thấy bạn cần mặc định lớn hơn các tùy chọn này (chúng được tính bằng byte)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.