回答:
time
測定するコマンドの前に追加します。例:time ls
。
出力は次のようになります。
real 0m0.606s
user 0m0.000s
sys 0m0.002s
real
、user
およびsys
(からman time
)の説明:
real
:プロセスで使用された経過実時間(ウォールクロック)(秒単位)。user
:プロセスが(ユーザーモードで)直接使用したCPU秒の合計数(秒単位)。sys
:プロセス(カーネルモード)のためにシステムが使用するCPU秒の合計数(秒単位)。sudo apt-get install time
でtime
はないシェルを使用している場合に必要になる場合があることに注意してください。
time
組み込み、しかしman time
(のような実行可能な程度になり/usr/bin/time
、よりtime
パッケージ)、およびその出力が異なって見えるでしょう。また、Bashではhelp time
、組み込みのヘルプを実行できます。
行ごとのデルタ測定については、gnomonを試してください。
タイムスタンプ情報を別のコマンドの標準出力の先頭に追加するコマンドラインユーティリティです。moreutilsのtsに少し似ています。長時間かかっているプロセスの履歴記録が必要な長時間実行プロセスに役立ちます。
gnomonに何かをパイプすると、各行にタイムスタンプが追加され、その行がバッファーの最後の行だった時間、つまり、次の行が表示されるのにかかった時間が示されます。デフォルトでは、gnomonは各行間の経過秒数を表示しますが、これは構成可能です。
sudo npm i gnomon -g
あればインストールできますnpm
。'\ r'を使用して(同じ行にとどまる) "進行中の"行に対してどれだけうまく機能するかわかりません。その場合、それを個別の行ではなく1つの長い行としてカウントしたいです。
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
ターミナルでこのコマンドを実行すると、ファイルをコピーするための合計時間がわかります
find
、2>/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
警告を回避します。
時々、アプリの起動などのアクションにかかる時間をカウントするためにストップウォッチが必要になることがあります。この場合、ここでのソリューションの多くは役に立ちません。
このために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
real
、user
およびsys
時間は、このコマンドが返すことがありますか?