端末プロセスの実行時間を測定するにはどうすればよいですか?


160

コマンドラインを介して呼び出すプロセスの実行時間を測定しようとしています(つまり、プロセスが終了するまでにかかる時間を調べたい)。これを達成するプロセスを呼び出すコマンドに追加できるコマンドはありますか?

回答:


197

time測定するコマンドの前に追加します。例:time ls

出力は次のようになります。

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

realuserおよびsys(からman time)の説明:

  • real:プロセスで使用された経過実時間(ウォールクロック)(秒単位)。
  • user:プロセスが(ユーザーモードで)直接使用したCPU秒の合計数(秒単位)。
  • sys:プロセス(カーネルモード)のためにシステムが使用するCPU秒の合計数(秒単位)。

1
何@ninjalj、あなたは上でより多くの情報を提供することができrealuserおよびsys時間は、このコマンドが返すことがありますか?
クリストファーカイルホートン

2
@JacobVlijmこの答えはそれほど複雑ではありません。:)あなたのコメントを編集して、そうすることができます。
ムル

1
組み込みsudo apt-get install timetimeはないシェルを使用している場合に必要になる場合があることに注意してください。
プーリー

1
これはバッシュの出力であることに注意してくださいtime組み込み、しかしman time(のような実行可能な程度になり/usr/bin/time、よりtimeパッケージ)、およびその出力が異なって見えるでしょう。また、Bashではhelp time、組み込みのヘルプを実行できます。
wjandrea

プロセスが終了しても、すべての作業が終了するわけではないことに注意してください。コピーは、システムのバッファをフラッシュするために「時間」が戻ってからさらに時間がかかる場合があります(そのため、sys時間も割り当てられていません)。
ubfan1

43

ごとのデルタ測定については、gnomonを試してください。

タイムスタンプ情報を別のコマンドの標準出力の先頭に追加するコマンドラインユーティリティです。moreutilsのtsに少し似ています。長時間かかっているプロセスの履歴記録が必要な長時間実行プロセスに役立ちます。

gnomonに何かをパイプすると、各行にタイムスタンプが追加され、その行がバッファーの最後の行だった時間、つまり、次の行が表示されるのにかかった時間が示されます。デフォルトでは、gnomonは各行間の経過秒数を表示しますが、これは構成可能です。

gnomonデモ


2
これはかなり滑らかです。
ネイサンアーサー

1
(リンクのタイプミス、幸いなことにURLは問題ありません)。がsudo npm i gnomon -gあればインストールできますnpm。'\ r'を使用して(同じ行にとどまる) "進行中の"行に対してどれだけうまく機能するかわかりません。その場合、それを個別の行ではなく1つの長い行としてカウントしたいです。
トマスガンドール

パイプをgnomonにパイプします!それでおしまい ?
シアストピエカルツ


8
date +"%T" && cp -r ./file  /destination/folder/here && date +"%T"

ターミナルでこのコマンドを実行すると、ファイルをコピーするための合計時間がわかります


これにより、期間ではなく、開始時刻と終了時刻が表示されます。
wjandrea

状況によっては、これは良い答えです。たとえばfind2>/dev/nullリダイレクトなしの次のコマンドは、大量の Permission deniedメッセージを提供します。ただし、2>/dev/nullそのコマンドに追加すると、そのコマンドのtime一部が壊れます。以下は適切な妥協案を提供します:START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"、(たとえば)/usr/lib/libname-server-2.a find command took 3 sec 唯一の出力として。
ビクトリアスチュアート

私のコメントへの補遺:もちろん、単純にtime sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print(つまりasとしてsudo)実行できます-これらの多数のPermission denied警告を回避します。
ビクトリアスチュアート

4

時々、アプリの起動などのアクションにかかる時間をカウントするためにストップウォッチが必要になることがあります。この場合、ここでのソリューションの多くは役に立ちません。

このためにswを使用するのが好きです。

sw

インストール

wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw

使用法

sw
 - start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
 - start a stopwatch from the last saved start time (or current time if no last saved start time exists)
 - "-r" stands for --resume

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.