WIPIVERSE

time (유닉스)

개요
time은 유닉스 및 유닉스 계열 운영체제에서 제공되는 명령어(또는 쉘 내장 명령)로, 지정된 프로그램이나 명령을 실행하고 그 실행에 소요된 시간 정보를 측정·출력한다. 측정 대상은 실제(실시간) 경과 시간, 사용자 모드(CPU)에서 사용된 시간, 시스템 모드(Kernel)에서 사용된 시간 등이다.

주요 기능

  • 실행 시간 측정: time [옵션] 명령어 [인수...] 형태로 사용한다. 명령어가 종료된 뒤, real, user, sys 세 항목을 포함한 결과를 표준 오류(stderr) 스트림에 출력한다.

    • real : 명령이 시작된 시점부터 종료될 때까지의 실제 경과 시간(벽시계 시간).
    • user : 명령이 사용자 모드에서 CPU를 사용한 시간.
    • sys : 명령이 커널(시스템) 모드에서 CPU를 사용한 시간.
  • 옵션

    • -p : POSIX 호환 형식으로 출력한다. (real X.XX, user X.XX, sys X.XX)
    • -f format (GNU time) : 출력 형식을 지정한다. 예) -f "Elapsed: %E, CPU: %S"
    • -o 파일 (GNU time) : 결과를 지정 파일에 저장한다.
    • -a (GNU time) : 기존 파일에 결과를 추가한다.

구현 형태

  • 쉘 내장: 대부분의 현대 쉘(bash, zsh, ksh 등)에서는 time을 내장 명령으로 제공한다. 이 경우 별도 실행 파일을 호출하지 않으며, 쉘 내부에서 바로 측정한다.
  • 외부 프로그램: POSIX 표준에 따라 /usr/bin/time 형태의 독립 실행 파일도 존재한다. 외부 프로그램은 내장과 옵션 및 출력 형식에서 차이가 있을 수 있다(예: GNU time은 풍부한 포맷 옵션을 제공한다).

역사 및 표준

  • time 명령은 1970년대 초 UNIX Version 6에 포함된 이후, 여러 UNIX 변종에 지속적으로 구현되었다.
  • POSIX.1‑2008 표준에도 time 명령이 정의되어 있으며, 최소한 -p 옵션과 real, user, sys 출력이 요구된다.

사용 예시

$ time ls -l /usr/bin > /dev/null
real    0m0.012s
user    0m0.000s
sys     0m0.004s

위 예시에서 ls -l /usr/bin 명령이 표준 출력으로 결과를 내보내지 않도록 리다이렉션한 뒤, time이 12 ms(벽시계 시간) 동안 실행되었으며, 그 중 0 ms는 사용자 모드, 4 ms는 시스템 모드에서 사용된 것으로 보고한다.

관련 명령·도구

  • date : 현재 시스템 시간을 조회·조작한다.
  • timedatectl (systemd 기반 시스템) : 시스템 시간 및 타임존 관리에 사용된다.
  • perf, strace 등 : 보다 상세한 성능·시스템 호출 분석에 활용된다.

참고 문서

  • POSIX.1‑2008, “Utility Description — time”
  • GNU time 매뉴얼 페이지 (man time)
  • Bash Builtin time 매뉴얼 (help time)

time 명령은 UNIX 환경에서 성능 측정 및 스크립트 디버깅에 보편적으로 활용되는 표준 도구이며, 그 동작과 출력은 POSIX 규격에 의해 정의되어 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기