Wi-Fiアンテナがありますが、その位置を最適化したいです。この提案では、現在の待ち時間をリアルタイムで視覚化したいと思います。
ping待ち時間を出力するために1行のスクリプトを作成しました。
緯度:
ping 8.8.8.8|gawk '/64 bytes/{ match($7,/[0-9.]+/,arr); print((i++)," ",arr[0]);}'
gnuplotを使ってプロットしたい。
plot "<lat.sh"
それは動作しません。 lat.shが端末に表示すべき内容を表示することがわかりました。たとえば、次のようになります。
$ ./lat.sh
0 47.7
1 25.5
2 15.8
3 16.7
ただし、パイプへの出力は機能しません。./lat.sh > outfile
または、端末には何も印刷されませんが、ファイル(またはパイプ)は空です./lat.sh|tee outfile
。./lat.sh &> outfile
gnuplotパイプラインも同様です。本当に混乱しています。
ベストアンサー1
マクセルフのように説明する以下はバッファリングの問題です。この問題を解決する1つの方法は、awk
すぐに使用を強制することですfflush()
(残りは現在実行中の作業を単純化したバージョンです)。
ping 8.8.8.8 | gawk -F'[= ]' '/^64/{print i++,$(NF-1); fflush()}'
この呼び出しは、バッファがいっぱいになるのを待たずに出力が可能になるとすぐに出力されるようfflush()
にします。awk
あるいは、ping
特定の回数だけ実行してみることもできます。たとえば、10:
ping -c 10 8.8.8.8 | gawk ...