time 명령을 실행하면 Nice로 실행할 때 완전히 다른 출력이 생성됩니다.

time 명령을 실행하면 Nice로 실행할 때 완전히 다른 출력이 생성됩니다.

로드가 많은 Ubuntu 시스템에서 실행 nice -n 19 time echo하고 다음 출력을 얻습니다.

0.00user 0.00system 0:02.80elapsed 0%CPU (0avgtext+0avgdata 1732maxresident)k
312inputs+0outputs (1major+74minor)pagefaults 0swaps

그러나 실행하면 time echo다음과 같은 결과가 나타납니다.

real    0m0.000s
user    0m0.000s
sys     0m0.000s

더 이상한 점은 내가 달리면 다음과 같은 결과가 nice -n 19 time time나온다는 것입니다.

Usage: time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]
Command exited with non-zero status 1
0.00user 0.00system 0:03.29elapsed 0%CPU (0avgtext+0avgdata 1344maxresident)k
0inputs+0outputs (0major+67minor)pagefaults 0swaps

하지만 실행하면 time time다음과 같은 결과가 나타납니다.

real    0m0.000s
user    0m0.000s
sys     0m0.000s

time이것을 실행할 때 왜 다른 결과 가 나오나요 nice? 처음에는 더 높은 값을 생성할 것이라고 생각했지만(예: 실제 값은 0.000s가 아님) 명령이 명령을 nice변경한 것처럼 보입니다.time

답변1

간단히 말해서:type명령이 쉘 내장 명령인지 확인하는 데 사용됩니다 . bash의 timein time xyz/usr/bin/timein 을 사용하고 있습니다 nice time xyz.


type <command>쉘이 무엇을 사용하는지 알아 보려면 다음을 수행하십시오 .

$ type time
time is a shell keyword

In은 bash time쉘 키워드입니다. 이는 time명령 이 아닙니다 (에서 찾을 수 있음 which time). Bash의 많은 명령에는 , echo등과 test같은 내장 셸 키워드가 있습니다 pwd.

$ type echo test pwd nice time
echo is a shell builtin
test is a shell builtin
pwd is a shell builtin
nice is /usr/bin/nice
time is a shell keyword

man이 경우 잘못된 문서가 반환됩니다 . help쉘 명령이 필요합니다 .

$ help time
time: time [-p] pipeline
    Report time consumed by pipeline's execution.

    Execute PIPELINE and print a summary of the real time, user CPU time,
    and system CPU time spent executing PIPELINE when it terminates.

    Options:
      -p        print the timing summary in the portable Posix format

    The value of the TIMEFORMAT variable is used as the output format.

    Exit Status:
    The return status is the return status of PIPELINE.

time그런데 매뉴얼에는 다음과 같은 팁이 포함되어 있습니다.

$ 사람 시간

TIME(1) 일반 명령 매뉴얼 TIME(1)

이름
       프로그램을 정기적으로 실행하고 시스템 리소스 사용량을 요약합니다.

요약
       시간 [ -apqvV ] [ -f 형식 ] [ -o 파일 ]
              [ --append ] [ --verbose ] [ --quiet ] [ --portability ]
              [ --format=FORMAT ] [ --output=FILE ] [ --version ]
              [ --help ] 명령 [ ARGS ]

설명하다
       주어진 인수 ARG를 사용하여 COMMAND 프로그램을 실행할 시간입니다....
       COMMAND가 완료되면 시간에 다음 정보가 표시됩니다.
       COMMAND에서 사용하는 리소스(표준 오류 출력에서 ​​다음을 통해)
       기본). COMMAND가 0이 아닌 상태로 종료된 경우 시간을 표시합니다.
       경고 메시지 및 종료 상태.

       ...

       ...

       Bash 쉘 사용자는 명시적인 경로를 사용해야 합니다.
       내장 셸 대신 외부 시간 명령 실행
       변형. /usr/bin에 시간이 설치된 시스템에서는
       첫 번째 예는 다음과 같습니다.
            /usr/bin/time 화장실 /etc/hosts

인용하다:

  • man 1 time
  • info bash time또는 man 1 bash"SHELL GRAMMAR"의 "PIPELINE" 섹션
  • 리눅스 명령줄, 43-46페이지.

답변2

두 가지 time명령을 사용할 수 있습니다. 하나는 셸에 내장되어 있고 다른 하나는 파일 시스템의 실행 파일입니다. 발견한 대로 출력 형식이 다릅니다. nice셸에 내장된 항목은 실행할 수 없으므로 다른 항목을 실행합니다.

답변3

달리기

time nice command ...

사용time쉘에 내장.

time또는 전체 멋진 파이프라인( 셸에 내장하는 것이 핵심임)의 시간을 측정하려면 다음을 수행해야 합니다.

time nice bash -c 'some cmd... | other cmd...'

nice전체 파이프라인에 적용 가능하도록 만듭니다 .

관련 정보