컴퓨팅에서, time은 유닉스와 유닉스-계열 운영 시스템에서 명령입니다. 그것은 특정 명령의 실행 기간을 결정하기 위해 사용됩니다.
Overview
time(1)은 독립 실행형 프로그램 (예를 들어 GNU 시간) 또는 대부분의 경우에서 쉘 내장 (예를 들어, sh, bash, tcsh 또는 zsh)으로 존재할 수 있습니다.
User time vs system time
총 CPU 시간은 CPU 또는 CPU들이 일부 동작을 수행하는 데 소비한 시간과 프로그램을 대신하여 커널에 대해 시스템 호출을 수행하는 데 소비한 시간의 조합입니다. 프로그램이 배열을 순환할 때, 사용자 CPU 시간이 누적됩니다. 반대로, 프로그램이 exec 또는 fork와 같은 시스템 호출을 실행할 때, 시스템 CPU 시간이 누적됩니다.
Real time vs CPU time
이 컨텍스트에서 "실시간"이라는 용어는 스톱워치를 사용하는 것과 같이 경과된 벽시계 시간을 나타냅니다. 총 CPU 시간 (사용자 시간 + 시스템 시간)은 해당 값보다 크거나 작을 수 있습니다. 프로그램은 (사용자 모드에서든 시스템 모드에서든) 전혀 실행하지 않고 대기하는 데 약간의 시간을 보낼 수 있기 때문에, 실제 시간은 총 CPU 시간보다 클 수 있습니다. 프로그램은 CPU 시간 (사용자 및 시스템 모두)이 time 명령에 의해 보고된 값에 추가되는 자식을 분기할 수 있지만, 멀티코어 시스템에서 이들 작업이 병렬로 실행되므로, 총 CPU 시간이 실시간보다 클 수 있습니다.
Usage
그 명령을 사용하려면, 다음과 같이 명령 앞에 time이라는 단어를 붙이면 됩니다:
$ time ls
명령이 완료할 때, time은 사용자 CPU 시간, 시스템 CPU 시간 및 실시간 측면에서 ls 명령을 실행하는 데 걸린 시간을 보고합니다. 출력 형식은 명령 버전에 따라 다르고, 일부는 다음 예와 같이 추가 통계를 제공합니다:
$ time host wikipedia.org
wikipedia.org has address 103.102.166.224
wikipedia.org mail is handled by 50 mx2001.wikimedia.org.
wikipedia.org mail is handled by 10 mx1001.wikimedia.org.
host wikipedia.org 0.04s user 0.02s system 7% cpu 0.780 total
$
time (독립 실행형 프로그램, 또는 배시 쉘이 POSIX 모드에서 실행되고 time이 time -p로 호출될 때)은 표준 오류 출력에 보고합니다.
time -p
이식 가능한 스크립트는 다른 출력 형식을 사용하지만 다양한 구현과 일치하는 time -p 모드를 사용해야 합니다:
$ time -p sha256sum /bin/ls
12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls
real 0.00
user 0.00
sys 0.00
$
Implementations
GNU time
GNU time의 현재 버전은 기본적으로 time 이상을 보고합니다:
$ /usr/bin/time sha256sum /bin/ls
12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 2156maxresident)k
0inputs+0outputs (0major+96minor)pagefaults 0swaps
$
GNU time에 대한 출력 형식은 TIME 환경 변수를 사용하여 조정될 수 있고, 실행 시간 (예를 들어, 메모리 사용량) 이외의 정보를 포함할 수 있습니다. 이 행위는 일반적인 POSIX-호환 time 또는 time -p로 실행할 때 사용할 수 없습니다.
이 time의 문서는 보통 man 1 time을 사용하여 접근될 수 있습니다.
Method of operation
GNU time 구현의 소스 코드에 따르면, time에 의해 표시되는 대부분의 정보는 wait3 시스템 호출에서 파생됩니다. 상태 정보를 반환하는 wait3 호출을 가지지 않는 시스템에서는, times 시스템 호출이 대신 사용됩니다.
Bash
널리 사용되는 유닉스 쉘 Bash에서, time은 파이프라인 (또는 단일 명령) 앞에 놓을 수 있는 특수 키워드로, 단일 (첫 번째) 명령뿐만 아니라, 전체 파이프라인의 시간을 측정하고, 다른 기본 형식을 사용하고, 보고 시간 전에 빈 줄을 넣습니다:
$ time seq 10000000 | wc -l
10000000
real 0m0.078s
user 0m0.116s
sys 0m0.029s
$
보고된 시간은 seq와 wc -l 모두에서 사용된 시간을 합산한 것입니다. 출력 형식은 TIMEFORMAT 변수를 사용하여 조정될 수 있습니다.
time은 내장이 아니라 특수 키워드이고, 함수나 명령으로 취급될 수 없습니다. 그것은 역시 파이프라인 리다이렉션을 무시합니다 (전체 Bash가 "POSIX 모드"에서 실행되지 않는 한 time -p로 실행되는 경우에도).
이 time에 대한 문서는 man 1 bash를 사용하거나 bash 자체 내에서 help time을 사용하여 접근될 수 있습니다.
External Resources
- time: time a simple command – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
- time(1) – Inferno General commands Manual
- time(1): time a simple command or give resource usage – Linux User's Manual – User Commands