내 Linux 셸 스크립트에 인터넷에서 샘플 파일의 평균 다운로드 속도를 얻으려는 코드 조각이 있습니다.
다음 코드를 사용하는 경우:
targetURL=https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg 2>/dev/null
curl -L $targetURL | head -n 1| cut -d $' ' -f2
"Dload" 아래에 값이 필요합니다(예제 출력에서는 175입니다. 얻은 값을 변수에 저장하겠습니다.
내 결과는 다음과 같습니다
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0cut: stdin: Illegal byte sequence
3 1018k 3 33834 0 0 175k 0 0:00:05 --:--:-- 0:00:05 175k
curl: (23) Failed writing body (0 != 1362)
답변1
컬에는 평균 다운로드 속도를 제공하는 -w
옵션이 있습니다. 자세한 내용은 참조를 --write-out
참조하세요 . ( curl로 측정한 전체 다운로드의 평균 다운로드 속도, 초당 바이트 수라고 표시되어 있습니다.)man curl
speed_download
url='https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg'
if avg_speed=$(curl -qfsS -w '%{speed_download}' -o /dev/null --url "$url")
then
echo "$avg_speed"
fi
표준 출력 curl
(바이트/초 단위의 평균 다운로드 속도)은 이라는 쉘 변수에 저장됩니다 avg_speed
. 예를 들어, 결과는 을 사용 하여 인쇄 179199
할 수 있습니다.numfmt --to=iec <<<"$avg_speed"
175K
표준 출력이 결과에 사용되므로 %{speed_download}
use는 전송을 다른 곳(이 경우 null 장치)으로 보냅니다 -o
.