尝试找出执行以下操作的脚本的最佳方法:
- 创建一个循环脚本,使用 dd 创建一个 10GB 文件,完成后删除该文件,然后重复 25 次,或者如果在脚本有机会退出之前键入 CTRL+C。
- 在每个操作结束时,即 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
,请参阅以下链接,