터미널 프로세스의 실행 시간을 어떻게 측정 할 수 있습니까?


160

커맨드 라인을 통해 호출하는 프로세스의 실행 시간을 측정하려고합니다 (즉, 프로세스가 완료되는 데 걸리는 시간을 알고 싶습니다). 이것을 달성하는 프로세스를 호출하는 명령에 추가 할 수있는 명령이 있습니까?

답변:


197

time측정하려는 명령 앞에 추가하십시오 . 예를 들면 다음과 같습니다 time ls..

결과는 다음과 같습니다.

real    0m0.606s
user    0m0.000s
sys     0m0.002s

에 대한 설명 real, user그리고 sys(에서 man time)

  • real: 프로세스에서 사용한 실제 경과 시간 (초).
  • user: 프로세스가 직접 (사용자 모드에서) 사용한 총 CPU 시간 (초)입니다.
  • sys: 프로세스 (커널 모드) 대신 시스템에서 사용한 총 CPU 시간 (초)입니다 (초).

1
뭐라고 @ninjalj, 당신은에 대한 자세한 정보를 제공 할 수 있습니다 real, user그리고 sys시간이 명령 반환하는 것이 있습니까?
Christopher Kyle Horton

2
@JacobVlijm이 답변은 정교하지 않습니다. :) 당신은 당신의 의견을 편집하고 그렇게 할 수 있습니다.
muru

1
내장이 아닌 sudo apt-get install time쉘을 사용하는 경우 필요할 수 있습니다 time.
poolie

1
이 배쉬의에서 출력합니다 time내장,하지만 man time실행에 대한 것이다 (같은 /usr/bin/time의에서 time패키지), 그 출력은 다를 것이다. 또한 Bash에서는 help time내장에 대한 도움말을 실행할 수 있습니다 .
wjandrea

프로세스 종료가 모든 작업이 완료된 것은 아닙니다. 시스템 버퍼 플러시를 위해 "시간"이 반환 된 후 사본이 추가 분이 소요될 수 있습니다 (따라서 할당되지 않은 sys 시간도 있음).
ubfan1

43

라인 별 델타 측정의 경우 gnomon을 시도하십시오 .

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

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

gnomon demo


2
꽤 매끈하다.
Nathan Arthur

1
(링크 오타, 다행스럽게도 URL ok). 설치되어 sudo npm i gnomon -g있으면 설치할 수 있습니다 npm. '\ r'(같은 줄에 머물러 있음)을 사용하여 "진행"줄에 대해 얼마나 잘 수행하는지 확실하지 않습니다.이 경우 별도의 줄이 아닌 하나의 긴 줄로 계산하고 싶습니다.
Tomasz Gandor 2016 년

그래서 우리는 그것을 gnomon에 파이프합니다! 그게 다야?
Ciasto piekarz


8
date +"%T" && cp -r ./file  /destination/folder/here && date +"%T"

터미널에서이 명령을 실행하면 파일을 처리 할 수있는 총 시간이 제공됩니다


이렇게하면 기간이 아닌 시작 시간과 종료 시간이 제공됩니다.
wjandrea

상황에 따라 좋은 답변입니다. 예를 들어, 경로 재 지정이 find없는 다음 명령 2>/dev/null풍부한 Permission denied 메시지를 제공 합니다. 그러나 2>/dev/null해당 명령을 추가 하면 해당 명령의 time일부가 중단 됩니다. 다음은 좋은 타협을 제공합니다. START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"예를 들어 /usr/lib/libname-server-2.a find command took 3 sec 유일한 출력으로 제공합니다.
빅토리아 스튜어트

내 의견에 대한 부록 : 물론, 많은 경고를 피하면서 간단히 실행할 수 있습니다 time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print(예 :). sudoPermission denied
빅토리아 스튜어트

4

때로는 앱 부팅과 같은 작업에 걸리는 시간을 계산하기 위해 스톱워치가 필요한 경우가 있습니다.이 경우 여기에 많은 솔루션이 유용하지 않습니다.

이를 위해 sw 사용하고 싶습니다 .

sw

설치

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw

용법

sw
 - start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
 - start a stopwatch from the last saved start time (or current time if no last saved start time exists)
 - "-r" stands for --resume

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.