bash 스크립트로 작업을 처리하고선 그 경과 시간을 측정하고자 하려고 한다.
스크립트 특성상 다양한 방법이 있겠지만, date, bc, awk 를 이용해서 만들어 봤다.
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash beginTime=$(date +%s%N) # 여기에 작업 내용을 구현한다 sleep 1 endTime=$(date +%s%N) elapsed=`echo "($endTime - $beginTime) / 1000000" | bc` elapsedSec=`echo "scale=6;$elapsed / 1000" | bc | awk '{printf "%.6f", $1}'` echo TOTAL: $elapsedSec sec |
date 를 이용해서 nanosecond 시간을 얻어서 그 차이를 구한다.
그리고 bc 를 이용해서 부동소수의 초단위의 시간을 계산하고, 그 결과를 awk 에 넘겨서 출력 포맷팅을 만들었다.
위의 실행 결과는 다음과 같다.
1 |
TOTAL: 1.003000 sec |
참고:
- http://en.wikipedia.org/wiki/Date_(Unix)
- http://stackoverflow.com/questions/2362154/shell-float-number-in-expr
- http://unix.ittoolbox.com/groups/technical-functional/shellscript-l/floating-point-arithmetic-using-expr-859937
- http://theeye.pe.kr/entry/expression-of-floating-point-on-linux-shell
출처: https://netmaid.tistory.com/34 [Service for Every Master]