타이밍이 있는 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내 메인 컴퓨터에서는 /tmpSATA SSD(내가 있는 곳)에 쓸 때 속도가 [15-20%] 더 빠릅니다.


그러나 문제가 발생할 수 있습니다 oflag=direct. 아래 링크를 참조하세요.

왜 항상 "dd"와 함께 "oflag=direct"를 사용하지 않습니까?

관련 정보