TIME(1) | Linux User's Manual | TIME(1) |
time - コマンドの時間計測やリソース使用量を表示する
time [options] command [arguments...]
time コマンドは、指定されたプログラム command を渡された引き数で実行する。 command が終了すると、 time はこのプログラムの実行時間の統計情報についてのメッセージを 標準エラー出力に出力する。 表示される統計情報は以下の三つから構成される: (i) 起動から終了までに経過した実時間 (real time)、 (ii) ユーザー CPU 時間 (times(2) が返す struct tms の tms_utime と tms_cutime の値の合計)、 (iii) システム CPU 時間 (times(2) が返す struct tms の tms_stime と tms_cstime の値の合計)。
(bash(1) などの) いくつかのシェルには、ここで説明するコマンドよりも 機能が少ない、組み込みの time コマンドが存在する。 組み込みではない実際のコマンドを使用するためには、 (/usr/bin/time のような) コマンドのパス名を指定する必要があるかもしれない。
command が起動された場合は、 command の終了ステータスが終了ステータスとなる。 command が見つからなかった場合は終了ステータスは 127 で、 command が見つかったが起動できなかった場合は 126 となる。 これ以外で何かエラーがあった場合は、終了ステータスは 0 以外の前記以外の値 (1-125) の何かになる。
環境変数 LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, LC_NUMERIC, NLSPATH, PATH が使用される。 PATH は command を探すのに使われる。それ以外は出力文字や書式に使用される。
以下は GNU 1.7 バージョンの time の説明である。コマンド名とは裏腹に、GNU バージョンでは 有益な情報がたくさん出力される。使用時間だけでなく、 (取得できる場合には) メモリーや I/O、IPC 呼び出しなどの他のリソース に関する情報も出力される。 出力はフォーマット文字列を使って整形され、 フォーマット文字列は -f オプションか環境変数 TIME で指定できる。
デフォルトのフォーマット文字列は以下の通り。
%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps
-p オプションが指定された場合には、
real %e
user %U
sys %S
という (他と互換性のある) 出力フォーマットが使用される。
フォーマットはよくある printf 形式で解釈される。 通常の文字はそのままコピーされ、 タブ、改行 (newline)、バックスラッシュはそれぞれ \t, \n, \\ で エスケープされる。 パーセント記号は %% で表現され、それ以外の % は変換を示す。 末尾には必ず改行文字 (newline) が追加される。 変換は以下の通りである。 tcsh(1) で使用される変換は全てサポートされている。
Time
Memory
I/O
全てのリソースが UNIX の全てのバージョンで計測されているわけではないので、 いくつかの値が 0 と報告される可能性がある。 現在の出力項目のほとんどは 4.2BSD や 4.3BSD で取得可能なデータに 基づいて選択されている。
GNU time バージョン 1.7 はまだローカライズされていない。 そのため、POSIX の要件を実装していないことになる。
TIME という環境変数は名前の選択がまずい。 autoconf(1) や make(1) のようなシステムでは、使用するコマンドを上書きするのにそのコマンドの 名前の環境変数を使うのが珍しくない。 MORE や TIME のような名前を (プログラムのパス名の指定ではなく) プログラムへのオプションを指定するのに使うと、 面倒なことを引き起こす可能性が高い。
-o が追記ではなく上書きになっているのは残念なことだ (つまり -a オプションがデフォルトになっているべきだろうということだ)。
GNU time
に対する提案やバグレポートは
bug-utils@prep.ai.mit.edu
までメールを送ってほしい。
その場合には time や
OS、使用している C
コンパイラの
バージョンを記載してほしい。
time のバージョンは
time --version
で取得できる。
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2008-11-14 |