我正在编写一个bash脚本,通过time-dd命令来测试写/读速度,time在stderr上写入,同时dd在stdout上写入,使用2>amp;1我将得到的输出重定向到stdout,然后读取变量time_writeing。
dd_output=$(time dd bs="$bs" conv=fsync count=$count if=/dev/zero of="${file_temporaneo:-$block_device}" 2>&1)
write_speed=$(grep --only-matching --extended-regexp --ignore-case '[0-9.]+ ([GMk]?B|bytes)/s(ec)?' <<< "$dd_output")
time_writing=$(sed -n 's/real"(.")/1/p' <<< "$dd_output")
我不知道如何像dd命令那样获得在stdout中输出的时间,使用:(time dd if=/dev/urandom of=/dev/null bs=1K count=100000) 2>&1|& sed -n 's/realt*(.*)/1/p'
我可以获得实时性,但我也需要写作速度。
这是我从命令中得到的输出:
real 0m1,585s
user 0m0,060s
sys 0m1,352s
512 - 170 MB/s -
real 0m0,876s
user 0m0,024s
sys 0m0,719s
1024 - 307 MB/s -
real 0m0,584s
user 0m0,020s
sys 0m0,419s
2048 - 460 MB/s -
real 0m0,478s
user 0m0,012s
sys 0m0,305s
4096 - 563 MB/s -
real 0m0,435s
user 0m0,000s
sys 0m0,281s
8192 - 618 MB/s -
real 0m0,379s
user 0m0,000s
sys 0m0,261s
16384 - 710 MB/s -
real 0m0,402s
user 0m0,004s
sys 0m0,242s
32768 - 670 MB/s -
real 0m0,363s
user 0m0,000s
sys 0m0,232s
65536 - 742 MB/s -
real 0m0,387s
user 0m0,000s
sys 0m0,223s
131072 - 695 MB/s -
real 0m0,377s
user 0m0,004s
sys 0m0,218s
262144 - 714 MB/s -
real 0m0,364s
user 0m0,004s
sys 0m0,217s
524288 - 741 MB/s -
real 0m0,443s
user 0m0,000s
sys 0m0,286s
1048576 - 607 MB/s -
real 0m0,393s
user 0m0,000s
sys 0m0,260s
2097152 - 687 MB/s -
real 0m0,433s
user 0m0,004s
sys 0m0,282s
4194304 - 623 MB/s -
real 0m0,496s
user 0m0,000s
sys 0m0,245s
8388608 - 543 MB/s -
real 0m0,414s
user 0m0,000s
sys 0m0,246s
16777216 - 651 MB/s -
real 0m0,397s
user 0m0,000s
sys 0m0,238s
33554432 - 681 MB/s -
real 0m0,439s
user 0m0,000s
sys 0m0,293s
67108864 - 617 MB/s -
没有时间(只是dd)我得到的是:
512 - 192 MB/s -
1024 - 314 MB/s -
2048 - 429 MB/s -
4096 - 573 MB/s -
8192 - 637 MB/s -
16384 - 666 MB/s -
32768 - 702 MB/s -
65536 - 683 MB/s -
131072 - 716 MB/s -
我想得到的是:
512 - 192 MB/s - 0m0,672s
1024 - 314 MB/s - 0m0,572s
2048 - 429 MB/s - 0m0,472s
4096 - 573 MB/s - 0m0,352s
等等。。。感谢任何愿意帮助我的人。。。
修改此命令:
dd_output=$(time dd bs="$bs" conv=fsync count=$count if=/dev/zero of="${file_temporaneo:-$block_device}" 2>&1)
包括time
:产生的输出
dd_output=$( { time dd bs="$bs" conv=fsync count=$count if=/dev/zero of="${file_temporaneo:-$block_device}"; } 2>&1 )