ฉันได้เขียนรายการนี้เพื่อแสดงการอ่าน / เขียน MB ทุก 5 วินาที
#!/bin/bash
#iosum.sh
iostat -dmz 5 |\
awk 'BEGIN{rx=wx=0}{if($0 == ""){printf"%.1f %.1f\n",rx,wx}else if($0~/^Device:/){rx=wx=0}else{rx+=$3;wx+=$4}}'
เมื่อทำงานจากบรรทัดคำสั่งมันทำงานได้อย่างสมบูรณ์
./iosum.sh
# wait
1.1 0.0
0.0 0.1
0.0 0.0
3.0 3.0
0.0 0.0
# ctrl-c
อย่างไรก็ตามเมื่อฉันพยายามใส่ผลลัพธ์ลงในไฟล์ฉันจะไม่ได้อะไรเลย
./iosum.sh > out.txt
# wait
# ctrl-c
cat out.txt
# nothing!
สิ่งที่ช่วยให้?
fflush(stdout)
หลังจาก printf แก้ไขปัญหา