{{위키데이터 속성 추적}}
{{소문자}}
{{소프트웨어 정보
| name                   = time
| logo                   = 
| screenshot             = Time command example.png
| screenshot size        = 
| caption                = <code>time</code> 명령어의 예제
| developer              = 
| released               = 
| latest release version = 
| latest release date    = 
| operating system       = [[유닉스]] 및 [[유닉스 계열]]
| genre                  = [[명령어 (컴퓨팅)|명령어]]
| license                = 
| website                = 
}}
[[컴퓨팅]]에서 <code>'''time'''</code>은 [[유닉스]], [[유닉스 계열]] 운영 체제의 명령어이다. 특정 [[명령어 (컴퓨팅)|명령어]]의 실행 시간을 확인하는데 사용한다.

== 개요 ==
time(1)은 [[GNU]] time와 같이 독립 프로그램으로 존재할 수 있고, 대부분의 경우(예: [[유닉스 셸|sh]], [[배시 (유닉스 셸)|bash]], [[Tcsh]] 또는 [[Z 셸]]) [[유닉스 셸|셸]] 내장으로 존재할 수 있다.

=== 사용자 시간 vs 시스템 시간 ===
총 CPU 시간은 CPU가 일부 프로그램의 동작을 수행하기 위해 소요된 시간의 양, 그리고 프로그램 대신 [[커널 (컴퓨팅)|커널]]의 [[시스템 호출]]을 수행하는데 소요된 시간을 합친 것이다. 프로그램이 배열을 통해 루프를 돌 때 사용자 CPU 시간이 축적된다. 이와 반대로, 프로그램이 <code>exec</code> 또는 <code>fork</code>와 같은 [[시스템 호출]]을 실행할 때 시스템 CPU 타임을 축적한다.

=== 실시간 vs CPU 타임 ===
이 문맥에서 "실시간"이라는 용어는 스톱 워치를 사용하는 것처럼 경과된 [[벽시계 시간]]을 가리킨다. 총 CPU 타임(사용자 시간 + 시스템 시간)은 어느 정도 해당 값과 비슷할 수 있다.  프로그램이 온전히 실행이 아닌 대기로만 어느 정도 시간을 소요할 수 있기 때문에(사용자 모드냐 시스템 모드냐에 따라) 실시간은 총 CPU 시간보다 더 클 수 있다. CPU 시간(사용자, 시스템 둘 다)이 <code>time</code> 명령에 의해 보고된 값에 추가된 칠드런을 프로그램이 포크할 수 있으므로(멀티코어 시스템에서 태스크들은 병렬로 수행됨) 총 CPU 시간은 실시간보다 더 클 수 있다.

== 사용법 ==
명령어를 사용하려면 다음과 같이 단순히 <code>time</code> 단어를 우선하여 명령어를 지정하면 된다:

<syntaxhighlight lang="bash">$ time ls</syntaxhighlight>

명령어가 실행될 때 <code>time</code>는 사용자 [[CPU 타임]], 시스템 CPU 타임, 실시간 측면에서 얼마나 오랫동안 <code>[[Ls (유닉스)|ls]]</code> 명령어의 실행이 소요되었는지를 보고한다. 출력 포맷은 명령어의 버전에 따라 다양하며 일부는 다음과 같은 추가적인 통계를 제공하기도 한다:

<syntaxhighlight lang="console">
$ 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
$
</syntaxhighlight>

time(독립 프로그램이든, 또는 POSIX 모드로 Bash 셸이 실행 중이면서 time이 <code>time -p</code>로 호출 시)은 표준 오류 출력에 보고한다.

===time -p===
포터블 스크립트는 다른 출력 포맷을 사용하지만 다양한 출력 포맷을 사용하는 <code>time -p</code>를 사용하는 것이 좋으며, 여러 구현체에서 다음과 같이 일정한 형태를 지닌다:

<syntaxhighlight lang="console">
$ time -p sha256sum /bin/ls
12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc  /bin/ls
real 0.00
user 0.00
sys 0.00
$
</syntaxhighlight>

== 구현체 ==
===GNU time===
현재 버전의 GNU time은 기본적으로 시간 외에 더 많은 정보를 보고한다:

<syntaxhighlight lang="console">
$ /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
$
</syntaxhighlight>

[[GNU]] time의 출력 포맷은 <code>'''TIME'''</code> 환경 변수를 사용하여 조정할 수 있으며 실행 시간 외의 정보(예: 메모리 사용률)를 포함할 수 있다. 이러한 동작은 일반 [[POSIX]] 호환 time에서, 또 <code>time -p</code>로 실행 중에는 사용할 수 없다.

이 time의 설명 문서는 보통 <code>man 1 time</code>를 사용하여 접근할 수 있다.

==== 운용 방식 ====
GNU의 <code>time</code> 구현체의 소스 코드에 따르면 <code>time</code>로 표시되는 더 많은 정보는 <code>wait3</code> 시스템 호출에서 가져온 것이다. 상태 정보를 반환하는 <code>wait3</code> 호출이 없는 시스템에서는 <code>times</code> 시스템 호출을 대신 사용한다.

===Bash===
유명한 유닉스 셸 [[배시 (유닉스 셸)|Bash]]에서, <code>'''time'''</code>은 특수 키워드로서, [[파이프라인]](또는 단일 명령) 이전에 둘 수 있으며 하나의(처음) 명령어만이 아닌 파이프라인 전반의 시간을 측정하며 다른 기본 포맷을 사용하며 시간을 보고하기 전에 빈 줄을 추가한다:

<syntaxhighlight lang="console">
$ time seq 10000000 | wc -l
10000000

real	0m0.078s
user	0m0.116s
sys	0m0.029s
$
</syntaxhighlight>

보고되는 시간은 <code>'''seq'''</code>와 <code>'''wc -l'''</code>를 함께 사용한 시간이다. 출력 포맷은 <code>'''TIMEFORMAT'''</code> 변수를 사용하여 조정할 수 있다.

시간은 내장형이 아닌, 특수 키워드이며 함수나 명령으로 처리될 수 없다. 또, 파이프라인 리다이렉이션은 무시한다.("POSIX 모드"로 Bash를 실행하지 않은 경우 <code>time -p</code>으로 실행할 때에도)

이 time의 설명 문서는 <code>man 1 bash</code>를 사용하여, 또는 bash 그 자체에서 <code>help time</code>를 사용하여 접근할 수 있다.

== 같이 보기 ==
* [[시스템 시간]]
* [[Cron]]
* [[TIME (명령어)]]

== 참고 문헌 ==
* {{man|cu|time|SUS|time a simple command}}
* {{man|1|time|Linux|time a simple command or give resource usage}}

{{유닉스 명령어}}

[[분류:유닉스 SUS2008 유틸리티]]
[[분류:유닉스 프로세스 및 작업 관리 관련 소프트웨어]]