[shell] 쉘 명령의 실행 시간 인쇄

다음 조합으로 쉘 명령의 실행 시간을 인쇄 할 수 있습니까?

root@hostname:~# "command to execute" && echo "execution time"



답변

bash의 내장 time(기본적으로 호출해야 함 time command)과 /usr/bin/time(전체 경로로 호출해야 함 ) 간에 차이가 있다는 것을 잊지 마십시오 .

내장은 time항상 stderr로 인쇄하지만 /usr/bin/time시간의 출력을 특정 파일로 보낼 수 있으므로 실행 된 명령의 stderr 스트림을 방해하지 않습니다. 또한 /usr/bin/time의 형식은 명령 줄 또는 환경 변수 로 구성 할 수있는 TIME반면 bash의 내장 time형식은 환경 변수 로만 구성 할 수 TIMEFORMAT있습니다.

$ time factor 1234567889234567891 # builtin
1234567889234567891: 142662263 8653780357

real    0m3.194s
user    0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps


답변

time tty에 실행 시간 정보를 기록하는 대부분의 쉘에 내장 된 명령입니다.

다음과 같은 것을 시도해 볼 수도 있습니다.

start_time=`date +%s`
<command-to-execute>
end_time=`date +%s`
echo execution time was `expr $end_time - $start_time` s.

또는 bash:

start_time=`date +%s`
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s


답변

root@hostname:~# time [command]

또한 실시간 사용과 시스템 사용 시간을 구분합니다.


답변

라인 별 델타 측정의 경우 gnonom을 사용해보십시오 .

다른 명령의 표준 출력에 타임 스탬프 정보를 추가하는 것은 moreutils의 ts와 약간 유사한 명령 줄 유틸리티입니다. 너무 오래 걸리는 기록을 기록하려는 장기 실행 프로세스에 유용합니다.

gnomon에 무엇이든 파이핑하면 각 줄 앞에 타임 스탬프가 추가되어 해당 줄이 버퍼의 마지막 줄이었던 시간, 즉 다음 줄이 나타나는 데 걸린 시간을 나타냅니다. 기본적으로 gnomon은 각 줄 사이에 경과 된 시간 (초)을 표시하지만 구성 할 수 있습니다.

노몬 데모


답변

@mob의 답변에 추가 :

에 추가 하면 나노초 정확도 %Ndate +%s제공됩니다.

start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`


답변

복사 또는 해시와 같은 장기 실행 프로세스를 시작하고 나중에 얼마나 오래 걸 렸는지 알고 싶다면 다음과 같이합니다.

$ date; sha1sum reallybigfile.txt; date

결과는 다음과 같습니다.

Tue Jun  2 21:16:03 PDT 2015
5089a8e475cc41b2672982f690e5221469390bc0  reallybigfile.txt
Tue Jun  2 21:33:54 PDT 2015

물론 여기에 구현 된대로 정확하지 않고 경과 시간을 계산하지도 않습니다. 그러나 그것은 간단하고 때로는 필요한 모든 것입니다.


답변

zsh에서는 다음을 사용할 수 있습니다.

=time ...

bash 또는 zsh에서는 다음을 사용할 수 있습니다.

command time ...

이들은 (다른 메커니즘에 의해) 외부 명령이 사용되도록 강제합니다.