Monitorar as alterações de uso do disco para inferir a velocidade de download

0

Estou testando várias soluções para fazer o download de grandes conjuntos de dados, downloads que podem levar semanas e exigir várias reinicializações. Em vez de monitorar a velocidade da rede, gostaria de usar a alteração no uso do disco para inferir velocidades de download, pois isso evitará a medição da retransmissão de transferências com falha. Existe uma ferramenta para fazer isso, ou devo rolar minha própria solução bash?

    
por pufferfish 20.11.2013 / 11:07

2 respostas

1

Coreutils são adequados para esse tipo de coisa. Aqui está uma solução rápida que também salvará as datas e horas.

$ echo -e "$(date)\t$(df | awk '$1 == "/dev/sda1" {print $2}')" > df_1
<wait a while>
$ echo -e "$(date)\t$(df | awk '$1 == "/dev/sda1" {print $2}')" > df_2
$ echo "$(( $(awk '{print $2}' FS='\t' df_2) - $(awk '{print $2}' FS='\t' df_1) )) K increase from $(awk '{print $1}' FS='\t' df_1) to $(awk '{print $1}' FS='\t' df_2)"
12 K increase from Wed Nov 20 21:22:07 EST 2013 to Wed Nov 20 21:23:13 EST 2013

Não tenho certeza se você precisa disso, mas para explicar o que ele faz:

  • Primeiramente, salve a data e a hora atuais ( date ) e o espaço em disco "usado" ( awk '$1 == "/dev/sda1" {print $2}' ) no arquivo df_1 . Pode ser necessário substituir seu sistema de arquivos específico em vez de /dev/sda1 . Use df sozinho para obter uma lista.
  • Em segundo lugar, repita mais tarde.
  • Por fim, imprima a diferença entre o espaço em disco "usado" $((...)) , que foi armazenado no primeiro campo de cada arquivo, e imprima as datas (do segundo campo).
por Sparhawk 20.11.2013 / 11:31
1

Sparhawk me bateu nisso, mas aqui está minha própria solução, que eu pretendia executar como um cron job

#!/bin/bash
timestamp1=$(cat du-prev.txt | cut -f 2)
timestamp2=$(date +"%s")
timediff=$(echo "${timestamp2}-${timestamp1}" | bc)

current=$(du -s | cut -f 1)
previous=$(cat du-prev.txt | cut -f 1)
spacediff=$(echo "${current}-${previous}" | bc)

speed=$(echo "scale=2; ((${spacediff}/${timediff})*8)/1024" | bc)

echo "timediff   : ${timediff} sec"
echo "spacediff  : ${spacediff} KB"
echo "speed      : ${speed} Mb/s"
echo -e "${current}\t${timestamp2}" > du-prev.txt
echo -e "${speed}\t${timestamp2}" >> logs/speedlog.txt
    
por pufferfish 20.11.2013 / 12:57