
嘗試找出執行以下操作的腳本的最佳方法:
- 建立一個循環腳本,使用 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
,請參閱以下鏈接,