unbuffer 명령을 time 명령과 함께 사용할 때 이상한 점을 발견했습니다. 여기서는 내 시스템에서 특정 파일을 찾는 데 시간이 얼마나 걸리는지 확인하고 싶습니다.
time find . -name unixstuff
출력은 다음과 같습니다
./Documents/CProgramming/2031/unix/Awk/unixstuff
0.011u 0.173s 0:00.38 47.3% 0+0k 0+0io 0pf+0w
하지만 이 명령이 출력되기 전에 unbuffer에 쓸 때:
./Documents/CProgramming/2031/unix/Awk/unixstuff
0.01user 0.17system 0:00.38elapsed 47%CPU (0avgtext+0avgdata 4656maxresident)k
0inputs+0outputs (0major+338minor)pagefaults 0swaps
0.17s가 0.17 시스템으로 확장되었으며 다른 단축 확장도 발생했습니다. 이러한 행동 변화가 발생하는 이유를 알고 싶습니다. 나는 파이프라인에서 예측할 수 없는 출력을 원하지 않습니다.
답변1
이는 time
shell 키워드가 첫 번째 명령에 있기 때문입니다. time
두 번째 명령은 실행 파일입니다. type
출력 보기 time
:
$ type -a time
time is a shell keyword
time is /usr/bin/time
이 명령에는 unbuffer
쉘 키워드가 아닌 프로그램이 인수로 필요합니다. 내부 키워드 인 쉘 키워드를 해석할 수 없습니다 bash
.
표시되는 출력의 차이는 time
명령의 두 구현 간의 차이입니다. 첫 번째 명령에서 절대 경로를 사용하면 두 번째 명령과 동일한 동작을 얻을 수 있습니다.
/usr/bin/time find . -name unixstuff