Executar a função bash a cada x minuto (s)

1

Eu tenho um script bash com uma função chamada speedtest criada assim:

function speedtest
    {
            echo $time_min; 
            echo $(date +%R),"$(speedtest-cli --csv)" >>temp.csv # Outputs van datum en speedtest in temp.csv
            cut -d, -f1,8 < temp.csv >> output2.csv; # Verwijderd onnodige info uit temp en plaatst het in output.csv
            awk -F , -v OFS=, '/=1000000' <output2 >output2.csv # Zet bits/s om naar Mbp/s
            rm temp.csv;
    }

Eu gostaria de executar essa função exatamente x minutos. Observe que a função leva algum tempo para ser executada. Se eu rodar a cada x minutos, não é a mesma coisa que executá-lo, dormir por x minutos e depois executá-lo novamente. Eu quero começar a função exatamente a cada x minutos.

    
por Cyber_Star 17.12.2017 / 11:59

1 resposta

2

Parece que você não está autorizado a usar o cron. Nesse caso, você poderia usar um loop infinito para chamar essa função em segundo plano e depois dormir por x minutes:

while true; do speedtest & sleep 60; done

Apenas certifique-se de dormir o tempo suficiente para que a atual chamada speedtest termine antes que o sono termine, para evitar que várias instâncias do processo sejam executadas em paralelo.

Se você não quiser manter um terminal aberto com essa corrida, você pode fazer isso em uma sessão screen ou tmux .

    
por janos 17.12.2017 / 12:04