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.000秒ではありません)、コマンドがコマンドをnice変更したようです。time

ベストアンサー1

簡単に言うと:typeコマンドがシェル組み込みコマンドであることを確認するために使用されます。 bashのtimeintime 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がゼロ以外の状態で終了した場合の時間を表示します。
       警告メッセージと終了ステータス。

       ...

はい
       ...

       Bashシェルユーザーは明示的なパスを使用する必要があります。
       組み込みシェルの代わりに外部時間コマンドを実行する
       変形。 /usr/binに時間がインストールされているシステムでは
       最初の例は次のとおりです。
            /usr/bin/time トイレ /etc/hosts

引用:

  • man 1 time
  • info bash timeまたはman 1 bash「SHELL GRAMMAR」の「PIPELINE」セクション
  • Linuxのコマンドライン、43-46ページ。

おすすめ記事