Como: Continuar executando o script somente quando a rede (conexão com a internet) estiver ociosa?

1

Eu tenho um script (na verdade, um aplicativo Rails com um sistema de fila de trabalho Sidekiq), que envia fotos e álbuns para o Flickr. Esses dados são enormes para meus propósitos (cerca de 100 GB), e o upload é lento devido à minha baixa velocidade de internet.

Eu já configurei o script para ser executado quando o Ubuntu inicializar, assim como a interface init.d para controlar este script.

Agora, como o upload consome toda a minha largura de banda, quero executar esse script apenas quando a conexão com a Internet estiver inativa, ou seja, o script deve pausar automaticamente quando a conexão à Internet estiver sendo usada por outros aplicativos e retomar assim que ficar ocioso. novamente.

Por isso, gostaria de saber se existe uma maneira de monitorar minha conexão com a Internet e verificar se outros aplicativos estão conectados on-line. Nesse caso, o script é pausado e é reiniciado quando a conexão fica inativa novamente.

Qualquer indicação ou ajuda a esse respeito é bem-vinda.

    
por Stoic 25.09.2014 / 19:51

1 resposta

0

Você pode usar / proc / net / dev para monitorar a atividade da rede, algo assim:

packets() {
    # Get the number of packets of eth0 device
    cat /proc/net/dev | grep eth0 | cut -f5 -d' ';
}

LAST=$(packets)

while [ true ]; do
    sleep 1;
    PACKS=$(packets)
    DIFF=$(($PACKS-$LAST));
    # I consider idle less than 10 packets per second
    if [ $DIFF -le 10 ]; then
        echo 'Idle!';
    fi
    LAST=$PACKS;
done

O truque aqui é o que você considera ocioso, já que o tráfego zero é uma impossibilidade do mundo real:)

    
por Vinicius 25.09.2014 / 22:33