Linuxコマンド辞典 timeコマンド(プロセス管理)

コマンドの実行時間を計測して表示する「time」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

引数に指定されたコマンドを実行し、そのコマンドが終了するまでに要して時間を表示します。timeをパスを指定せずに実行するシェル組込みコマンドを実行しますが、/usr/bin/timeを実行するとtimeパッケージに含まれるGNU timeを実行します。

書式:シェル組込みtime

$ time [オプション] [コマンド]

書式:GNU time

$ time [オプション] [コマンド[引数]]

シェル組込みtimeコマンドの表示項目

シェル組込みコマンドは、指定されたコマンド実行後に以下の項目を表示します。

項目説明
realプログラムやデータの読み込みを含めた起動から終了までの時間
userループなどの処理をしたユーザーモードの実行時間
sysシステムコールを処理したカーネルの実行時間

GUN timeは出力項目/形式をカスタマイズできます。形式は「%E」で表示する値を指定します。デフォルトでは、ユーザモードの実行時間/カーネルの実行時間/起動から終了までの時間/CPU利用率/ファイルシステムへの書き込み回数/読み込み回数/スワップ回数を表示します。

フォーマット文字列

Time
%E経過した実時間(時:分:秒形式)
%e経過した実時間(秒単位)
%Sそのプロセスがカーネルモードで消費したCPU時間の合計(秒単位)
%Uそのプロセスがユーザモードで消費したCPU時間の合計(秒単位)
%Pこのジョブが獲得した CPU の割り合い (パーセンテージ)。 (%U + %S) / %E で計算される。
Memory
%Mプロセス生存中のそのプロセスの resident set size の最大値。 キロバイト単位。
%tプロセスの resident set size の平均値。 (kバイト単位)
%Kプロセスのメモリー使用量の合計 (データ+スタック+テキスト) の平均値。 キロバイト単位。
%Dそのプロセスの非共有データ領域の平均サイズ。(kバイト単位)
%pそのプロセスの非共有スタック空間の平均サイズ。(kバイト単位)
%Xそのプロセスの共有テキスト空間の平均サイズ。(kバイト単位)
%Zシステムのページサイズ (バイト単位)。 この値はシステム毎に決まる定数だが、システムにより異なる。
%Fプロセスの動作中に発生したメジャーページフォルトの回数。 これは、ディスクからページを読み込む必要があったページフォルトに 関するものである。
%R

マイナーページフォールト、つまり回復可能なページフォルトの回数。

これは、そのページは有効でないが、まだ他の仮想ページに奪われて いなかったページに対するページフォルトに関するものである。

%Wプロセスがメインメモリからスワップアウトされた回数。
%cプロセスが (タイムスライスの経過により) 強制的にコンテキストスイッチ された回数。
%wwait の回数、つまりそのプログラムが自発的にコンテキストスイッチされた回数。 例えば、I/O 操作の完了を待っている間などが該当する。
I/O
%Iプロセスによるファイルシステムからの入力の回数。
%Oプロセスによるファイルシステムからの入力の回数。
%rプロセスが受信したソケットメッセージ数。
%sプロセスが送信したソケットメッセージ数。
%kプロセスに配送されたシグナル数。
%Ctime の対象となったコマンド名とコマンドライン引数。
%xコマンドの終了ステータス。

オプション(シェル組込み time)

-p実行時間を秒で表示する

オプション(GNU time)

GNU版のtimeコマンドを使用する場合は、「/usr/bin/time」とフルパスで指定する必要があります。

-a
–apend
-f フォーマット
–format フォーマット
出力フォーマットを指定する
-o ファイル名
–output=ファイル名
ファイルに出力する
-p
–portability
シェル組込みの「time-p」と同じ形式で出力する
-v
–verbose
コマンドが利用したリソース情報を1行ずつ表示する

実行コマンドの実行速度の計測

$ time コマンド

実行結果

[suna@localhost ~]$ time date
2022年  7月 12日 火曜日 11:35:09 JST

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

出力する表示方法を変更する

$ time -f "フォーマット文字列"コマンド

実行結果

[root@localhost suna]# /usr/bin/time -f "real:%e nuser:%U"  date
2022年  7月 12日 火曜日 12:29:46 JST
real:0.00 nuser:0.00