帶計時的 dd 腳本

帶計時的 dd 腳本

嘗試找出執行以下操作的腳本的最佳方法:

  1. 建立一個循環腳本,使用 dd 建立一個 10GB 文件,完成後刪除該文件,然後重複 25 次,或者如果在腳本有機會退出之前鍵入 CTRL+C。
  2. 在每個操作結束時,即 dd,然後 rm,計時,以便我們確切地知道 dd 和 rm 花費了多長時間

到目前為止,我正在思考以下幾點:

for i in {1..25}
  do
    time sh -c "dd if=/dev/zero of=/user/home/test.img bs=10G count=1" >> /tmp/dd_timed.txt && time sh -c "rm -f /user/home/test.img" >> rm_timed.txt
done

有人有更好的解決方案或可以稍微調整一下嗎?

答案1

好的,看來這是完成此任務的方法。看起來很噁心,但有效:

#!/bin/bash
for i in {1..25}
do
{ time dd if=/dev/zero of=/home/user/test.img bs=1G count=10 oflag=direct >& / dev/null ; } 2>> /tmp/dd_timed.txt && { time rm /home/user/test.img >& /dev/null ;  } 2>> /tmp/rm_timed.txt
done

答案2

比較所花的時間可能會很有趣

time ( dd if=/dev/zero of=/tmp/test.img bs=1M count=1024; sync )

time ( dd if=/dev/zero of=/tmp/test.img bs=1M count=1024 oflag=direct;sync )

您應該包括在內,sync以便測量完成寫入目標裝置的時間。

oflag=direct在我的主電腦中,寫入 SATA SSD(我/tmp所在的位置)時,使用速度要快 [15-20%] 。


但是,可能會出現問題oflag=direct,請參閱以下鏈接,

為什麼不總是在“dd”中使用“oflag=direct”?

相關內容