
초보자의 질문일 수도 있지만 이것이 어떻게 구성되어 있는지, time
다음 두 가지 경우에 명령의 출력 형식이 왜 다른지 이해가 되지 않습니다.
via를 통해 사용하면 time
출력은 기본 정보가 포함된 세 개의 행입니다.
$ time sleep 1
real 0m1.003s
user 0m0.000s
sys 0m0.000s
그런 다음 어떤 바이너리가 사용되는지 확인할 수 있습니다
$ which time
/usr/bin/time
훨씬 더 많은 정보와 함께 완전히 다른 형식으로 출력을 얻으려면 직접 호출하십시오.
$ /usr/bin/time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k
0inputs+0outputs (0major+77minor)pagefaults 0swaps
관련된 별칭이 없습니다.time
$ alias | grep time
$
나는 뛰고있어 Ubuntu 16.04
.
답변1
첫 번째는 bash
자신의 내장 키워드 time
( 로 컴파일됨 bash
)이고 두 번째는 외부 실행 파일 time
( /usr/bin/time
, time
패키지와 함께 제공됨)입니다.
또한 which
단지 검색만 하기 때문에 쉘의 내장 명령이나 키워드를 표시할 수 없으므로 이를 PATH
사용해야 합니다 . type
쉘 자체가 내장되어 type
쉘의 내부 엔터티(및 PATH
)를 추가로 확인할 수 있으므로 다음을 통해 차이점을 확인할 수 있습니다.
type -a time
여기:
$ type -a time
time is a shell keyword
time is /usr/bin/time
을 사용하면 첫 번째 것이 실행됩니다 time
. type
(없이 -a
) 를 사용하여 실행 중인 항목을 확인할 수도 있습니다 .
type time
이는 쉘의 내부 엔터티를 검색하고 가능한 모든 소스를 검색하도록 -a
지시합니다 .type
PATH
어떤 이유로 외부 버전이 필요한 경우 다음 중 하나를 사용하세요.
\time
"time"
'time'
command time
답변2
내장 유틸리티와 외부 유틸리티의 또 다른 차이점은 Bash의 내장 유틸리티입니다.time
시간이 지나면 파이프라인이 완성될 것입니다또는 쉘 함수 호출(분명히 루프이지만 매뉴얼에서는 이를 약속하지 않는 것 같습니다). 외부는 time
쉘 외부에 있기 때문에 주변 코드에 대해 알 수 없습니다.
bash$ time echo blah | sleep 3
real 0m3.002s
...
bash$ /usr/bin/time echo blah | sleep 3
0.00user 0.00system 0:00.00elapsed ?%CPU
...
bash$ time for x in 1 2 3 ; do sleep 1 ; done
real 0m3.006s
...
시간이 있는 동안지정된표준에서는 파이프라인에서 어떻게 작동해야 하는지 지정되지 않은 채로 남아 있으므로 이와 같은 보다 강력한 내부 구현이 가능합니다.