bash x 分繰り返し機能 [閉じる]

bash x 分繰り返し機能 [閉じる]

speedtest次のcreateという関数を含むbashスクリプトがあります。

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=, '$3/=1000000' <output2 >output2.csv # Zet bits/s om naar Mbp/s
            rm temp.csv;
    }

この機能をx分ごとに実行したいと思います。

答え1

function speedtest {ksh 関数定義構文です。ここでは$SECONDS浮動小数点に設定でき、sleep1秒未満の精度を持つ組み込みコマンドを持つksh93を使用することもできます。

min=60
((every = 5 * min))
typeset -F SECONDS=0
t=0
while true; do
  speedtest
  sleep "$(( (t += every) - SECONDS))"
done

ksh93組み込みのタイムスタンプとCSVの解析/生成もあるので、速度テスト機能を次のように書くことができます。

function speedtest
{
  typeset -a fields
  echo "$time_min"
  speedtest-cli --csv | IFS=, read -rSA fields
  ((fields[1] /= 1e6))
  {
    printf '%(%R)T'
    printf ',%#q' "${fields[@]:0:7}"
    printf '\n'
  } > output.csv
}

zsh浮動小数点に設定することもできますが、$SECONDS組み込みではないため、sleep1秒未満の省電力モードをサポートしていないシステムでは機能しません。 1秒(センチ秒)の間寝る機能が内蔵されていsleepます。zselect

関連情報