带计时的 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”?

相关内容